Javascript script/dom dependency?
Javascript script/dom dependency?
当帮助某人使用一个相当大的网站并且包含许多内容时,我遇到了一个错误并且无法理解它。是这样的
<script src=...></script>
<div ...
<script>
alert('myscript');
</script>
这个页面工作得很好,直到我使用html的那部分并使用jquery来ajax内容。它破坏了代码,但我不明白为什么。我看到了我的警报。我可以看到正在通过浏览器网络日志访问该脚本。我看到了第一个脚本标签的一些结果,但它坏了。
为什么订单很重要?我认为只要 dom 准备就绪并且脚本已执行,一切都应该没问题。但在这种情况下,被 ajaxed 打破了它。我不能花太多时间,但很好奇看到一些东西取决于时间。
--编辑--
我还注意到,如果脚本已经包含在内容中的页面上,它将运行良好
有谁知道为什么内容中断的 ajaxing?当它没有在它的罚款中。
根据你说的,我给出以下评估:
40% 的可能性 - 这是关于脚本负载。ajaxed 脚本中对其他脚本的依赖关系、您在页面上定义的变量,甚至是应该加载的 DOM 内容,在脚本被 ajaxed 并执行时可能无法加载。尝试更改页面上脚本标记的顺序,将脚本的加载放在文档ready
事件处理程序中,或使用setTimeout或defer="defer"
延迟脚本执行 - 或者如果你真的很酷,创建一个引导加载程序,确保每个脚本都按照您指定的确切顺序加载和执行: 通过将无依赖性同时加载集链接到相关负载序列。
脚本 1 <----取决于---(脚本 2.1、脚本 2.2、脚本 2.3) <---取决于--- Script3。
所以先加载 1,然后加载所有 2. 脚本,然后加载 3。
40%的可能性 - 这是关于安全模型的。你从哪里来的,那在哪里?它与页面所在的域有什么关系?您是否在localhost
上对此进行测试?如果是这样,则有更多限制。在实际服务器上呢?是否在 ajax 响应上正确设置了访问控制允许源标头?
20% 的可能性 - 它是脚本和 DOM 之间的循环依赖关系。 假设元素 X 上的某个事件处理程序在引用元素 X 的作用域上关闭。然后,在对 X 的引用中将有一个对 X 的引用,因此它们不能都被垃圾回收,因此 X 将持续存在,导致内存泄漏,并可能创建一个可能破坏代码的不可用引用。
--编辑--
根据您对.html(...)
的评论,我认为运行脚本.html或 .load 太混乱了,甚至可能根本不起作用。请参阅 .load() 不加载脚本,了解使用 ajax 加载脚本的好方法。或者你可以jQuery.getScript(...)
.
此外,我似乎记得即使在使用 ajax 从纯 HTML 加载 html 节点时也会遇到问题。对我来说似乎太乱了。如果你想在ajax之间传输结构化信息,请使用JSON,然后用javascript和HTML呈现这些信息。所以,不要抢整个数据+演示,只是抓住数据,然后在你这边做自己的演示。它更整洁。
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- Windows形成web浏览器控件和Javascript更改的DOM
- Datatables:通过DOM数据源中的名称引用列
- 在DOM中查找一个模式并替换它's的内容使用jquery
- DOM事件通过JSON转换为java
- 将DOM节点值与字符串Javascript进行比较
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 流星中DOM的繁殖
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- PHP-如何重定向到同一页面并更改DOM's
- 如何使用ViewCompiler手动编译DOM的一部分
- 从popup.js|Chrome扩展访问DOM
- React DOM offsetHeight before rendering
- DOM导航-上一个同级未定义
- Javascript script/dom dependency?