【发布时间】:2011-05-05 09:24:45
【问题描述】:
我最近在做很多 ajax 的东西。我一遍又一遍地重复的场景是:
- 加载页面
- 更改该页面的一些脚本
- 用 ctrl+f5 重新加载页面,看看它是否有效
我想要做的是告诉萤火虫只重新加载脚本而不是整个页面,因为标记是相同的。无论如何要这样做?
【问题讨论】:
-
好问题。实时保存。
标签: javascript debugging firebug
我最近在做很多 ajax 的东西。我一遍又一遍地重复的场景是:
我想要做的是告诉萤火虫只重新加载脚本而不是整个页面,因为标记是相同的。无论如何要这样做?
【问题讨论】:
标签: javascript debugging firebug
首先,尽量减少此类测试。在将其折叠到站点/页面之前,编写 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.
【讨论】:
我认为您真正需要的是自动化测试。编写您的测试,然后在更改代码后重新运行它们。
在 Firefox 上执行此操作的最佳方法是 webdriver。
【讨论】:
Firefox 目前无法做到这一点。
如果标记相同,那么 ctrl+f5 有什么问题?我猜您不想丢失表单字段中的数据?这再次导致问题,因为如果您只是重新加载脚本并且这些脚本具有在表单字段更改时触发的事件,这些事件将永远不会触发并且可能导致页面最终处于不应处于的状态。
有一些浏览器插件可以让您在单击按钮时使用预定义的值自动填写表单字段,这可能是仅重新加载脚本的好选择。看起来这个 Firefox 插件可以做到这一点https://addons.mozilla.org/en-US/firefox/addon/autofill-forms/
【讨论】: