FROM:https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript The same origin policy prevents a document or script loaded from one origin from getting or setting properties of a document from another origin. This policy dates all the way back to Netscape Navigator 2.0. 不同域禁止相互访问document对象 Mozilla considers two pages to have the same origin if the protocol, port (if one is specified), and [...]
Posts under ‘dom’
xml操作注意点2
尽量少的代码冗余,尽量少的局部变量,尽量少的全局变量,如下先举个小例子: var a = document.getElementsByTagName(“p”); var b = a[0]; var c = b.firstChild.nodeValue; 此时,可以看出b这个中间变量,可能我们使用的可以用a[0]来替代,而没有必要申明一个意义不大的变量。那么有人也会提出质疑,“a的意义也不大”,其实不然 var c = document.getElementsByTagName(“p”). firstChild.nodeValue; 假使document.getElementsByTagName(“p”)这个对象接下来会用到多次,这是很正常的,比如 document.getElementsByTagName(“p”).style.color = “red”; 那么此时不难发现多次的使用这个对象毫无疑问增加了代码的篇幅,如果它只出现一次两次的话,就无所谓了,一个长表达式就可以满足需要了。 【注】然而并不是任何时候都可以让我们满意: var linkNode = content.getElementsByTagName(“link”)[0]; var nodeText = linkNode.firstChild.nodeValue; 可以省略linkNode这个中间变量,写成: var nodeText = content.getElementsByTagName(“link”) [0].firstChild.nodeValue; 而如下的 var achor = document.createElement(“a”); achor.setAttribute(“href”,”http:\\..”); var achorTitle = document.createTextNode(“hehe”); achor.appendChild(achorTitle); 中间出现了变量achorTitle,开始我会想当然的写成如下: var achor = document.createElement(“a”). [...]
xml操作注意点1
var createXmlNode = function(tagname,textnode,styleobj){ var tag = document.createElement(tagname); for(var p in styleobj){ tag.style[p] = styleobj[p]; }; var tagtext = document.createTextNode(textnode); tag.appendChild(tagtext); return tag; }; var testNode = createXmlNode(“p”,”hehe”,{color:”red”}); //此时tag结点只有一份拷贝 //如果我们写 document.getElementById(“test1″). appendChild(testNode); test1 hehe test2 //很明显test1下肯定会插入testNode结点,此时我们再继续写 document.getElementById(“test2″). appendChild(testNode); //我们可能想当然的会认为test2再获得一份拷贝,但事实上我们会得到如下的情况 test1 test2 hehe //说明testNode这个结点被剪切了,而不是复制。 //浅显说这些对于不经常做xml操作的人来说,也许是够了,但是按照这种方式移动结点到底对我们的页面有多大的影响呢。比如说样式是否全然不变?结点的一个动作是否会改变? 事实证明,移动节点后,本身的样式是不会改变的,而通过继承得来的样式肯定就没有了,还会继承当前位置应该有的样式。 而动作基本上是不会变的,而文档结构的变化导致动作的变化也是无可厚非的。 //好了问题发现了,如何解决呢,我们起初的目的就是复制testNode这个结点,很简单 var testNode1 = testNode. cloneNode(true); 作者:虞峰 2008.8