博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
anu - browser
阅读量:4927 次
发布时间:2019-06-11

本文共 3567 字,大约阅读时间需要 11 分钟。

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    };});//用于后端的documentexport 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,11export 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/mathvar 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;    }}

 

转载于:https://www.cnblogs.com/dhsz/p/7561153.html

你可能感兴趣的文章
Shiro学习详解
查看>>
6最小公倍数和最大公约数的计算(未完期待)
查看>>
创建UITabBarController
查看>>
Kotlin学习记录3
查看>>
C#版本和.NET版本以及VS版本的对应关系
查看>>
单调栈与单调队列
查看>>
go 切片
查看>>
注册维))基))百))科))
查看>>
eclipse 中手动安装 subversive SVN
查看>>
react常用语法
查看>>
【json的使用】
查看>>
ural 1519 Formula 1(插头dp)
查看>>
序列化和反序列化
查看>>
Web服务器Nginx多方位优化策略
查看>>
作业六:三层神经网络调参
查看>>
Java中的hashcode方法
查看>>
OpenCV学习 7:图像形态学:腐蚀、膨胀
查看>>
软件需求与分析课堂讨论一
查看>>
js添加var和不加var区别
查看>>
时钟程序
查看>>