2011-05-05 71 views
17

我最近做了很多ajax的东西。场景,我重复一遍又一遍的是:如何通过萤火虫重新加载只脚本

  1. 加载页面
  2. 改变一些脚本该页面
  3. 重新加载页面,Ctrl + F5,看看它是否工作

我想什么是,告诉firebug重新加载只是脚本不是整个页面,因为标记是相同的。无论如何要做到这一点?

+0

不直接,没有。 – 2011-08-15 17:37:31

+0

优秀的问题。节省时间。 – kta 2015-01-10 15:32:27

回答

7

首先,尽量减少这种测试。在将其折叠到网站/页面之前,请写入原子,DRY code和单元测试。您可以在Firebug的控制台中快速执行一些操作。接下来,如果您正在重新加载的JS设置了间隔或事件侦听器,那么您需要清除这些间隔并在重新加载待测JS之前解除这些侦听器的绑定。这意味着匿名时间间隔和事件处理程序是严格的。

创建一个JS文件,根据需要调用clearInterval(),removeEventListener().unbind()

然后你就可以在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. 
0

Firefox目前无法做到这一点。

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

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

+0

不,我没有表单字段的问题...只是它的速度太慢,我每次都想看到编码的结果时碰到f5 ... – Marko 2011-05-05 10:59:22

+0

ctrl + f5需要多长时间? – Gavin 2011-05-05 11:02:37

+0

我明白了你的观点。但是想象一下你有什么样的工作流程并且你正在测试第5步..我在脚本中改变了一些东西,我想在第5步中看到结果......所以,我想要做的只是重新加载到脚本并执行步骤5,看看它现在在工作,不想重新加载整个页面,然后通过步骤,直到我点击第5步...好吗? ;) – Marko 2011-05-05 11:04:32

4

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

每它们site faq

XRefresh还能够与 更新的版本替换外部链接JS文件而不需要重新加载整个页面。

没有与此虽然限制(我不认为他们会得到周围任何方式),你可以阅读更多关于他们的常见问题页面上。

我仍然认为它比没有选择更好。

希望这会有所帮助。

3

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

在Firefox上这样做的最好方法是webdriver