有哪些用例以及是否已被弃用?正如我在http://groups.google.com/group/envjs/browse_thread/thread/6c22d0f959666009/c389fc11537f2a97中发现的那样,它是"非标准的,不受任何现代浏览器的支持"......
编辑:
关于document.implementation在http://javascript.gakaa.com/document-implementation.aspx:
返回对W3C DOMImplementation对象的引用,该对象在有限的程度上表示构成包含浏览器的文档的环境,用于我们的目的.通过对象的方法,您可以查看浏览器报告支持的DOM模块.此对象还是在当前文档树之外创建虚拟W3C Document和DocumentType对象的网关.因此,在Netscape 6中,您可以使用document.implementation属性作为为外部XML文档生成非渲染文档的开始.有关方法及其浏览器支持的详细信息,请参阅DOMImplementation对象.
鉴于它提供createHTMLDocument了在当前文档树之外创建非渲染文档的方法(例如),是否可以安全地提供可能包含某些XSS的不受信任的第三方HTML输入?我问,因为我想createHTMLDocument用于第三方HTML输入的遍历目的.可能是其中一个用例?
这被证实是Firefox中的一个错误,你可以在https://bugzilla.mozilla.org/show_bug.cgi?id=686247上了解更多相关信息.
我设置overflow到hidden通过jQuery,但它不会在Firefox 5得到应用,而在其他浏览器中它得到应用良好.请测试这个jsfiddle以自己查看问题:http://jsfiddle.net/f4HJd/这是一个关于它在Firefox 5中的外观的图像:http://i.stack.imgur.com/70zfy.png和一个那在Chrome中的图像进行比较:http://i.stack.imgur.com/eKVPB.png什么是错overflow的FF5?
编辑:
经过一些测试后,我发现该overflow属性确实应用于通过JavaScript动态添加的元素.所以,这意味着我们可以通过用它的副本替换有问题的元素并overflow: hidden在jQuery中应用如下来解决这个问题:
$('textarea').replaceWith($('textarea').clone().css('overflow', 'hidden'));
Run Code Online (Sandbox Code Playgroud)
正如旁注,我们甚至可以避免在可能的情况下更换元素,如下所示:
// for all browsers
$('textarea').css('overflow', 'hidden');
// for FF only
if ($.browser.mozilla) $('textarea').replaceWith($('textarea').clone());
Run Code Online (Sandbox Code Playgroud)
编辑2:
作为进一步的试验表明,overflow: hidden也得到当应用以及position属性设置为absolute或当display属性被设置为block或inline-block通过CSS静态或通过JavaScript.所以,像这样的东西可以很容易地帮助:
$('textarea').css({ display: 'inline-block', overflow: 'hidden' });
Run Code Online (Sandbox Code Playgroud)
编辑3:
问题似乎只与textarea元素有关.我在DIV元素上测试了它,内容得到了很好的修剪.因此,我怀疑是因为textarea元素是内联的,溢出属性适用于块级元素.
执行以下操作是否100%安全?:
var untrusted_input_from_3rd_party = '<script>alert("xss")<\/script>';
document.getElementsByTagName('body')[0].appendChild(document.createTextNode(untrusted_input_from_3rd_party));
Run Code Online (Sandbox Code Playgroud)
考虑到第三方可以输入任何内容(HTML,CSS等),我可以确定如果我将其传递createTextNode然后将其添加到dom中它不会造成任何伤害吗?