最好是插入一个iFrame,并在那里做任何需要做的事情,以免你的页面与你的额外脚本,CSS样式等混乱?当你无法在主窗口和iFrame之间交谈时,如何检测到事情已经完成并删除iFrame?
将脚本/ CSS插入DOM并在那里工作是否可以接受?
我的主要例子是Instapaper bookmarklet,它使用iFrame并在完成后关闭它。
答案 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