anu - browser
import { oneObject, recyclables, typeNumber } from "./util";
//用于后端的元素节点
export function DOMElement(type) {
this.nodeName = type;
this.style = {};
this.children = [];
}
//如果仅仅通过引用 SVG 的命名空间,就能够把 SVG 元素之间添加到 HTML 代码中,那就太棒了
export var NAMESPACE = {
svg: "http://www.w3.org/2000/svg",
xmlns: "http://www.w3.org/2000/xmlns/",
xlink: "http://www.w3.org/1999/xlink",
math: "http://www.w3.org/1998/Math/MathML"
};
var fn = (DOMElement.prototype = {
contains: Boolean
});
String(
"replaceChild,appendChild,removeAttributeNS,setAttributeNS,removeAttribute,setAttribute" +
",getAttribute,insertBefore,removeChild,addEventListener,removeEventListener,attachEvent" +
",detachEvent"
).replace(/\w+/g, function (name) {
fn[name] = function () {
console.log("fire " + name); // eslint-disable-line
};
});
//用于后端的document
export var fakeDoc = new DOMElement();
fakeDoc.createElement = fakeDoc.createElementNS = fakeDoc.createDocumentFragment = function (
type
) {
return new DOMElement(type);
};
fakeDoc.createTextNode = fakeDoc.createComment = Boolean;
fakeDoc.documentElement = new DOMElement("html");
fakeDoc.nodeName = "#document";
fakeDoc.textContent = "";
try {
var w = window;
var b = !!w.alert;
} catch (e) {
b = false;
w = {
document: fakeDoc
};
}
export var inBrowser = b;
export var win = w;
export var document = w.document || fakeDoc;
var isStandard = "textContent" in document;
var fragment = document.createDocumentFragment();
function emptyElement(node) {
var child;
while ((child = node.firstChild)) {
if (child.nodeType === 1) {
emptyElement(child);
}
node.removeChild(child);
}
}
export function removeDOMElement(node) {
if (node.nodeType === 1) {
if (isStandard) {
node.textContent = "";
} else {
emptyElement(node);
}
node.__events = null;
} else if (node.nodeType === 3) {
//只回收文本节点
recyclables["#text"].push(node);
}
//经典
fragment.appendChild(node);
fragment.removeChild(node);
}
var versions = {
88: 7, //IE7-8 objectobject
80: 6, //IE6 objectundefined
"00": NaN, // other modern browsers
"08": NaN
};
/* istanbul ignore next */
//判断是ie 6,7,8.9,10,11
export var msie =
document.documentMode ||
versions[typeNumber(document.all) + "" + typeNumber(XMLHttpRequest)];
//ie9 才是现代浏览器
export var modern = /NaN|undefined/.test(msie) || msie > 8;
export function createDOMElement(vnode) {
var type = vnode.type;
if (type === "#text") {
//只重复利用文本节点
var node = recyclables[type].pop();
if (node) {
node.nodeValue = vnode.text;
return node;
}
return document.createTextNode(vnode.text);
}
if (type === "#comment") {
return document.createComment(vnode.text);
}
try {
if (vnode.ns) {
return document.createElementNS(vnode.ns, type);
}
//eslint-disable-next-line
} catch (e) { }
return document.createElement(type);
}
// https://developer.mozilla.org/en-US/docs/Web/MathML/Element/math
var rmathTags = /^m/;
var namespaceMap = oneObject("svg", NAMESPACE.svg);
namespaceMap.semantics = NAMESPACE.math;
// http://demo.yanue.net/HTML5element/
"meter,menu,map,meta,mark".replace(/\w+/g, function (tag) {
namespaceMap[tag] = null;
});
export function getNs(type) {
if (namespaceMap[type] !== void 666) {
return namespaceMap[type];
} else {
return namespaceMap[type] = rmathTags.test(type) ? NAMESPACE.math : null;
}
}
anu - browser的更多相关文章
- HTML BOM Browser对象
BOM:Browser Object Model,即浏览器对象模型,提供了独立于内容的.可以与浏览器窗口进行互动的对象结构. Browser对象:指BOM提供的多个对象,包括:Window.Navig ...
- 模型浏览器【Model Browser】【EF基础系列6】
We have created our first Entity Data Model for School database in the previous section. The visual ...
- SQLite文件查看工具DB Browser for SQLite
有时候,我们用Python创建了一个test.sqlite文件,想查看里面的数据,除了用Python连上数据库,SELECT出来,还有什么好办法呢?这里推荐使用一个小工具DB Browser for ...
- Selenium通过WebDriver控制IE浏览器出错 Browser zoom level was set to 109%. It should be set to 100%
错误信息: WebDriverException: Message: Unexpected error launching Internet Explorer. Browser zoom level ...
- js get browser vertion (js获取浏览器信息版本)
1问题:js get browser vertion (js获取浏览器信息版本) 2解决方案 Copy this script into your JavaScript files. It works ...
- linux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本
最近需要做一个项目 在arm 架构的linux下 没有桌面环境的情况下拉起 有界面的浏览器使用. 考虑用qt 的界面和 qtwebikt 的库去实现这一系列操作. 本文参考: Qt移植到ARM Lin ...
- SQL Server : Browser服务
SQL Server : Browser服务是SQL Server 2005新增的,简单的说,如果一个物理服务器上面有多个SQL Server实例,那么为了确保客户端能访问到正确的实例,所以SQL S ...
- VS2013的 Browser Link 引起的问题
环境:vs2013 问题:在调用一个WebApi的时候出现了错误: 于是我用Fiddler 4直接调用这个WebApi,状态码是200(正常的),JSon里却提示在位置9409处文本非法, 以Text ...
- Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则
众所周知Visual Studio 2013中有一个由SignalR机制实现的Browser Link功能,意思是开发人员可以同时使用多个浏览器进行调试,当按下IDE中的Browser Link按钮后 ...
随机推荐
- Ubuntu 14.04 python3.6 安装
参考 how-do-i-install-python-3-6-using-apt-get Ubuntu 14.04 python3.6 安装 sudo add-apt-repository ppa:j ...
- Java中关于Arrays.asList()的操作
我们可以通过Arrays.asList() 产生一个List,但是要记住,我们通过Arrays.asList产生的list是基于一个固定大小的数组的, 仅支持那些不会改变数组大小的操作.所以我们在使用 ...
- WPF基础学习笔记整理 (二) XAML
基础知识: XAML:Extensible Application Markup Language, zammel: 用于实例化.NET对象的标记语言: XMAL使用树形逻辑结构描述UI: BAML: ...
- 遇到Io阻塞时会切换任务之【爬虫版】
#! /usr/bin/env python3 # -*- coding:utf- -*- from urllib import request import gevent,time from gev ...
- DB中字段为null,为空,为空字符串,为空格要怎么过滤取出有效值
比如要求取出微信绑定的,没有解绑的 未绑定,指定字段为null 绑定的,指定字段为某个字符串 解绑的,有的客户用的是更新指定字段为1,有的客户更新指定字段为‘1’ 脏数据的存在,比如该字段为空字符 ...
- Qt_2D_画图教程
1. ZC: 看点:相同的API,QPainter.QPainterDevice和QPainterEngine这3个类 Qt学习之2D绘图(画刷和画笔) http://blog.csdn.net/lp ...
- 02_DllZZ.def
ZC: 在VC6里面,只要有这个文件就可以了.但是到了 VS2010,需要手动的指定使用这个文件才行:VS2010-->项目-->属性--> 来到窗口"??? 属性页&qu ...
- js 转码思维
<body> <script type="text/javascript"> // var el = document.createElement('scr ...
- 解决Resource doesn't have a corresponding Go package.问题
首先上图 这个报错主要是程序要启动没有入口的原因,package main下边的mian方法才是一个程序的入口.这就要 修改目录结构如下图修改并运行就可以了
- RabbitMQ入门_06_深入了解ack
A. Delivery Tag 参考资料:https://www.rabbitmq.com/confirms.html 仔细查看一下 Consumer 的回调方法: public void handl ...