调试jQuery Mobile注入的脚本

时间:2011-04-03 13:53:31

标签: javascript debugging jquery-mobile

在jQuery Mobile中,我可以使用div将“移动网页”定义为data-role=page

这些可以存储在其他HTML文件中,并临时注入主HTML页面。

在这样的div中,我可以添加script标记,该脚本也会被注入我的主页。

该脚本在我的DOM中不会显示为script标记,而是似乎是内联注入的,因此它不会以标准方式出现在调试器中,例如FireBug的脚本面板。

有没有人找到调试这些脚本的正常方法(希望在FF或Chrome中)?

修改

只是澄清一下 - “其他”页面中的脚本标记不是内联脚本。这是一个:

<div data-role="page" id="some_id">
    <script type="text/javascript" src="MyScript.js"></script>
    ...
</div>

但是,它作为内联脚本注入DOM。

BTW - 如果我把脚本标签放在HTML的HEAD中,它根本就没有加载。

编辑2:

更多说明:

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

  2. 我的最终目标是允许“模块”开发人员调试他们的脚本。为此,我想要一个解决方案,其中引用脚本文件在FireBug / ChromeDevTools中可用,就像任何其他脚本一样。

  3. 似乎是标准的jquery(核心,非移动)行为从AJAX加载的html中删除脚本标记并将其内联,而不是将脚本标记留在那里并让浏览器正常加载它。

    我并不完全理解这背后的动机,它确实妨碍了我的调试选项: - (

    顺便说一句,我使用的是jQuery 1.5.2(与1.5.1相同的行为)和jQuery Mobile alpha 4(与3相同)

1 个答案:

答案 0 :(得分:0)

脚本随时附加到文档中,因此萤火虫通常不会看到它。 有一个加载项处理调试动态加载的脚本。 Inline Code Finder for Firebug但最后一次发布是在2009年。如果您修改支持的版本,可能会使用它。

顺便说一句。我相信你不应该使用jquery mobile的这个功能。它可以为包含大量内联脚本块等的大型项目提供基本支持。

您应该在每个子页面上包含脚本并使其以这种方式工作

如果需要.getScript(),则需要动态加载脚本,如果它们太大而无法一直包含在内。

[编辑]

是的,如果您将脚本放在头部,它将不会被加载。我再说一遍:将脚本放在每个页面的头部并绑定右页的pageshow而不是正常的document.ready