例如,$('#f').load('http://foobar.com #content');
是否保留或去除内联 JavaScript,例如 onclick= “……”
?
最佳答案
当您以这种形式使用“.load()”时,它会丢弃脚本标签并且不会执行脚本 - 像这样将选择器附加到 URL。
参见 this jQuery bug report获取更多信息。
当您将“.load()”与仅一个 URL 一起使用时:
$('#f').load('http://foobar.com', function () { ... });
然后它确实运行脚本,尽管它仍然会删除它们。我认为删除脚本的基本原理是当通过抓取内容并移动或复制它来操作 DOM 时,您通常不希望任何杂散的脚本 block 再次运行,但我不是 jQuery 贡献者所以我不确定。
edit — 在早上喝咖啡前的迷雾中重新阅读您的问题,我发现您特别询问了元素属性中的内联 JavaScript,例如“onfoo”事件处理程序。据我所知,无论您要求 jQuery 进行何种 DOM 处理(当然除了显式影响属性之外),这些都是绝对安全的。我上面写的是关于嵌入式 <script>
HTML 标记中的标记。
关于javascript - .load() 在检索内容时是否保留内联 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245803/