tic*_*tic 5 javascript bookmarklet
关于JS的新手.
我需要使用一个外部脚本来修改当前页面中的一些元素,将其作为书签进行访问.
如果我修改插入以下<script>行的网页的html源代码:
s=document.createElement('script');
s.type='text/javascript';
s.src='script.js';
document.getElementsByTagName('head')[0].appendChild(s);
Run Code Online (Sandbox Code Playgroud)
它工作正常.但是,如果我创建一个具有相同行的javascript:bookmarklet,我将获得一个包含以下字符串的空白页:
[object HTMLScriptElement]
Run Code Online (Sandbox Code Playgroud)
然而,如果我创建一个添加该行的书签
void(null);
Run Code Online (Sandbox Code Playgroud)
对于以前的网页,网页没有消失,但脚本没有执行.
为什么?
通常的做法是简单地使用自执行函数表达式,如下所示:
(function () {
var s=document.createElement('script');
s.type='text/javascript';
s.src='script.js';
document.getElementsByTagName('head')[0].appendChild(s);
}());
Run Code Online (Sandbox Code Playgroud)
书签:
javascript:(function(){var s=document.createElement('script');s.type='text/javascript';s.src='script.js';document.getElementsByTagName('head')[0].appendChild(s);}());
Run Code Online (Sandbox Code Playgroud)
该函数将返回undefined(不提供返回值)阻止导航.
另请注意,这将避免创建s可与页面上使用的其他变量重叠的全局变量(例如),因为所有变量都是在匿名函数的范围内创建的.
| 归档时间: |
|
| 查看次数: |
1461 次 |
| 最近记录: |