javascript - 调试 jQuery Mobile 注入(inject)脚本

标签 javascript debugging jquery-mobile

在 jQuery Mobile 中,我可以将“移动页面”定义为带有 data-role=pagediv

这些可以存储在其他 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:

更多说明:

  1. 我正在编写一个框架,将在客户站点上插入“扩展模块”,并决定加载哪个模块(即带有脚本的附加“页面”)是运行时决定。因此我在我的主页上事先不知道要加载哪些脚本,并且必须将加载推迟到“模块加载”时间。

  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/

相关文章:

debugging - xcode 4.5.2 和 IOS SDK 6.0 调试不工作?

javascript - 在移动设备上禁用垂直滚动

javascript - 如何减少元素边框的长度?

javascript - 匿名函数在 Javascript 中不起作用? (或者也许我只是没有得到匿名函数)

javascript - ember.js 自定义组件或 View

javascript - 使用 Angular JS 和脚本加载器 Modernizr

MySQL 错误信息没有提供有用的提示,那其他的呢?

debugging - 让 "trace"像 "assert"一样优化?

javascript - 为什么从上下文菜单中复制停止工作?

Android WebView JQuery 移动水平滚动