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

时间:2011-01-21 21:05:21

标签: javascript design-patterns bookmarklet

最好是插入一个iFrame,并在那里做任何需要做的事情,以免你的页面与你的额外脚本,CSS样式等混乱?当你无法在主窗口和iFrame之间交谈时,如何检测到事情已经完成并删除iFrame?

将脚本/ CSS插入DOM并在那里工作是否可以接受?

我的主要例子是Instapaper bookmarklet,它使用iFrame并在完成后关闭它。

2 个答案:

答案 0 :(得分:1)

我曾经做过的所有书签都直接插入到主页面的DOM中。所有代码都存在于该bookmarklet的命名空间内,因此DOM污染保持在最低限度,当然还有检查以确保不会与现有变量名冲突。

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

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

答案 1 :(得分:0)

模式1:

javascript:void(document.title += 'HAI!')

任何bookmarklet返回值都会转换为String,并在传递给document.write时起作用 void运算符会阻止它

模式2:

javascript:(function(){ for ( var i = 0; i < document.images.length; i++ ) document.images[i].title = document.images[i].alt; })()

bookmarklet正在全局范围内运行,因此如果没有上面的匿名函数代码将“泄漏”循环计数器为window.i