目标:制作一个独立的模块化JavaScript调试实用程序(包括自定义dom和事件操作方法),以便在任何感兴趣的随机站点(无后端访问权限)的控制台(最好是Chrome)中使用。
用法:最初直接通过复制粘贴到控制台包含模块脚本,或者创建一个指向script
的新myhomepage.com/shortandeasytoremember.js
元素,并从那里调用命名空间上的方法。
问题:如何在整个会话期间最好地使其持久化(这样我每次刷新后都不需要重新包含它)?
注意:不需要任何额外的浏览器兼容性 - 只要它在最新的Chrome中运行,我就可以了(但是兼容性部门的任何努力总是非常受到其他人的欢迎)。 如果你在未来的时间里阅读,到那时存在比下面所写的更好的解决方案,请花点时间用你的优秀知识做出贡献。
我目前拥有的是window.unload
上的一个事件监听器,用于将任何状态数据保存到localStorage
和一个字符串,以便在使用eval(localStorage.getItem('loadMyNS'));
重新加载页面后更容易重新包装模块。< / p>
(function(ns, undefined){
'use strict';
//util methods on ns and few monkey patches for debugging ...
var store = 'if(!window.MyNS){' +
'var xyz9=document.createElement("script");' +
'xyz9.src="http://myhomepage.com/shortandeasytoremember.js";' +
'document.head.appendChild(xyz9);}';
localStorage.setItem('loadMyNS', store);
ns.save = function () {
// and use localStorage for some more data
// to be used by other methods after page reload
};
window.addEventListener('unload', ns.save, false);
}(window.MyNS = window.MyNS || {}));
(没有localStorage
或addEventListener
的浏览器可能会受益于this article)
我也使用与window.name
而不是localStorage
(as long as this still seems legid)相同的架构,因为编写eval(window.name)
会减少输入^^。
我使用“eval-script-tag-inclusion”的麻烦(其中一个)位于阻止外部非https脚本源的网站上。一个理想的解决方案是一个全局可访问的模块,它将使用包含的状态和方法(并且在刷新后不需要初始化),至少直到我关闭窗口(或覆盖ref的c)。
如果目前绝对不可能,那么仍然优于我当前代码的较小解决方案就足够了。