Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript bookmarklet的普遍接受的设计模式是什么?_Javascript_Design Patterns_Bookmarklet - Fatal编程技术网

Javascript bookmarklet的普遍接受的设计模式是什么?

Javascript bookmarklet的普遍接受的设计模式是什么?,javascript,design-patterns,bookmarklet,Javascript,Design Patterns,Bookmarklet,最好插入iFrame并在其中执行任何需要执行的操作,这样就不会因为额外的脚本、CSS样式等而使页面混乱?当您无法在主窗口和iFrame之间进行对话时,如何检测事情是否已完成并删除iFrame 可以将脚本/CSS插入DOM并在其中执行工作吗 我的主要示例是Instapaper bookmarklet,它使用iFrame并在完成所有操作后将其关闭。我所做的所有bookmarklet都直接插入主页的DOM中。所有代码都存在于该bookmarklet的名称空间中,因此DOM污染保持在最低限度,当然还有一

最好插入iFrame并在其中执行任何需要执行的操作,这样就不会因为额外的脚本、CSS样式等而使页面混乱?当您无法在主窗口和iFrame之间进行对话时,如何检测事情是否已完成并删除iFrame

可以将脚本/CSS插入DOM并在其中执行工作吗


我的主要示例是Instapaper bookmarklet,它使用iFrame并在完成所有操作后将其关闭。

我所做的所有bookmarklet都直接插入主页的DOM中。所有代码都存在于该bookmarklet的名称空间中,因此DOM污染保持在最低限度,当然还有一些检查以确保与现有变量名没有冲突

插入到主文档的DOM中的原因是因为它使一切变得更容易-很少有任何好的理由让您自己变得更难:)


当然,这取决于你的目标。

我所做的所有bookmarklet都直接插入到主页的DOM中。所有代码都存在于该bookmarklet的名称空间中,因此DOM污染保持在最低限度,当然还有一些检查以确保与现有变量名没有冲突

插入到主文档的DOM中的原因是因为它使一切变得更容易-很少有任何好的理由让您自己变得更难:)

当然,这取决于你的目标。

模式1:

javascript:void(document.title += 'HAI!')
任何bookmarklet返回值都会转换为字符串,并充当传递给document.write的角色
void
操作员阻止它

模式2:

javascript:(function(){ for ( var i = 0; i < document.images.length; i++ ) document.images[i].title = document.images[i].alt; })()
javascript:(function(){for(var i=0;i
bookmarklet在全局范围内运行,因此如果没有匿名函数代码,上面的循环计数器将作为
窗口“泄漏”。i
模式1:

javascript:void(document.title += 'HAI!')
任何bookmarklet返回值都会转换为字符串,并充当传递给document.write的角色
void
操作员阻止它

模式2:

javascript:(function(){ for ( var i = 0; i < document.images.length; i++ ) document.images[i].title = document.images[i].alt; })()
javascript:(function(){for(var i=0;i
bookmarklet在全局范围内运行,因此如果没有上面的匿名函数代码,则会将循环计数器“泄漏”为
window.i