【问题标题】:how to reload only scripts through firebug如何通过firebug仅重新加载脚本
【发布时间】:2011-05-05 09:24:45
【问题描述】:

我最近在做很多 ajax 的东西。我一遍又一遍地重复的场景是:

  1. 加载页面
  2. 更改该页面的一些脚本
  3. 用 ctrl+f5 重新加载页面,看看它是否有效

我想要做的是告诉萤火虫只重新加载脚本而不是整个页面,因为标记是相同的。无论如何要这样做?

【问题讨论】:

  • 好问题。实时保存。

标签: javascript debugging firebug


【解决方案1】:

首先,尽量减少此类测试。在将其折叠到站点/页面之前,编写 atomic、DRY code 和单元测试。您可以在 Firebug 的控制台中快速完成其中的一些操作。

接下来,如果您正在重新加载的 JS 设置了间隔或事件侦听器,那么您需要在重新加载被测 JS 之前清除这些间隔并取消绑定这些侦听器。这意味着禁止匿名间隔和事件处理程序。

根据需要创建一个调用clearInterval()、removeEventListener()和.unbind()的JS文件。

然后你可以在 Firebug 的控制台中运行这样的代码:

function addJS_Node (text, s_URL)
{
    var scriptNode                      = document.createElement ('script');
    scriptNode.type                     = "text/javascript";

    if (text)  scriptNode.textContent   = text;
    if (s_URL) scriptNode.src           = s_URL;

    document.head.appendChild (scriptNode);
}

addJS_Node (null, 'Path_to_JS/ResetTimersAndEvents.js');

addJS_Node (null, 'Path_to_JS/JS_Under_Test.js');
// etc.

【讨论】:

    【解决方案2】:

    我认为XRefresh 可能会有所帮助。它监视您的本地文件夹的更改,并在它们更改时(在您保存后)重新加载它们,而无需重新加载整个页面。

    根据他们的site faq:

    XRefresh 还可以将外部链接的 JS 文件替换为 更新版本无需重新加载整个页面。

    虽然这有一些限制(我看不出有任何绕过它们的方法),您可以在他们的常见问题页面上阅读更多信息。

    我仍然认为这总比没有选择要好。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      我认为您真正需要的是自动化测试。编写您的测试,然后在更改代码后重新运行它们。

      在 Firefox 上执行此操作的最佳方法是 webdriver。

      【讨论】:

        【解决方案4】:

        Firefox 目前无法做到这一点。

        如果标记相同,那么 ctrl+f5 有什么问题?我猜您不想丢失表单字段中的数据?这再次导致问题,因为如果您只是重新加载脚本并且这些脚本具有在表单字段更改时触发的事件,这些事件将永远不会触发并且可能导致页面最终处于不应处于的状态。

        有一些浏览器插件可以让您在单击按钮时使用预定义的值自动填写表单字段,这可能是仅重新加载脚本的好选择。看起来这个 Firefox 插件可以做到这一点https://addons.mozilla.org/en-US/firefox/addon/autofill-forms/

        【讨论】:

        • 不,我的表单域没有问题...只是每次我想查看编码结果时按 f5 速度太慢了...
        • ctrl+f5 需要多长时间?
        • 我明白你的意思..但是想象一下你有某种工作流程并且你测试第 5 步的情况..我在脚本中更改了一些内容,我想在第 5 步中看到结果......所以,我想要做的只是重新加载到脚本并执行第 5 步以查看它现在是否正常工作,不想重新加载整个页面然后执行步骤,直到我点击第 5 步......好的? ;)
        • 我明白你在说什么,并同意在那种情况下这很痛苦。但是,如果您在第五步,那么我猜 DOM 已更改并且页面上的内容已被移动,因此重新加载 javascript 会导致更多问题,因为范围内的任何变量都会丢失并且脚本/dom 可能会超出同步。
        • 如果您还没有这样做,可能值得看看seleniumhq.org - 可能有助于减轻测试和重新测试工作流程/步骤 1-5 的痛苦
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-06
        • 2017-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多