在 jQuery Mobile 中,我可以将“移动页面”定义为带有 data-role=page
的 div
。
这些可以存储在其他 HTML 文件中,并临时注入(inject)主 HTML 页面。
在这样的 div
中我可以放一个 script
标签,那个脚本也会被注入(inject)到我的主页中。
该脚本在我的 DOM 中并未显示为 script
标记,而是似乎是内联注入(inject)的,因此它不会以标准方式出现在调试器中,例如FireBug 的脚本面板。
有没有人找到调试这些脚本的正常方法(希望在 FF 或 Chrome 中)?
编辑:
澄清一下——“其他”页面中的脚本标签不是内联脚本。这是一个:
<div data-role="page" id="some_id">
<script type="text/javascript" src="MyScript.js"></script>
...
</div>
仍然,它作为内联脚本注入(inject)到 DOM。
顺便说一句 - 如果我将脚本标记放在 HTML 的 HEAD 中,它根本不会加载。
编辑 2:
更多说明:
我正在编写一个框架,将在客户站点上插入“扩展模块”,并决定加载哪个模块(即带有脚本的附加“页面”)是运行时决定。因此我在我的主页上事先不知道要加载哪些脚本,并且必须将加载推迟到“模块加载”时间。
我的最终目标是让“模块”开发人员调试他们的脚本。为此,我想要一个解决方案,其中引用脚本文件像任何其他脚本一样在 FireBug/ChromeDevTools 中可用。
从 AJAX 加载的 html 中删除脚本标签并内联评估它似乎是标准的 jquery(核心,而不是移动)行为,而不是将脚本标签留在那里并让浏览器正常加载它。
我真的不完全理解这背后的动机,它确实妨碍了我的调试选项:-(
顺便说一句,我正在使用 jQuery 1.5.2(与 1.5.1 的行为相同)和 jQuery Mobile alpha 4(与 3 相同)
最佳答案
该脚本是动态附加到文档中的,因此 Firebug 通常看不到它。
有一个插件可以处理调试动态加载的脚本。 Firebug 的内联代码查找器
,但它的最后一个版本是在 2009 年。如果您修改支持的版本,您可能可以使用它。
顺便说一句。我相信您不应该使用 jquery mobile 的该功能。它用于为具有大量内联脚本 block 等的大型项目提供基本支持。
您应该在每个子页面上包含您的脚本并使其以这种方式工作
或
如果脚本太大而无法始终包含,则在需要时使用 .getScript()
动态加载脚本。
[编辑]
是的,如果你把脚本放在头部,它就不会被加载。我重复一遍:将脚本放在每个页面的头部并绑定(bind)右页面的 pageshow
而不是普通的 document.ready
关于javascript - 调试 jQuery Mobile 注入(inject)脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5529972/