5

完全是关于 JS 的新手。

我需要使用一个外部脚本来修改当前页面中的一些元素,将其作为书签访问。

如果我修改网页的 html 源代码,插入以下 <script> 行:

s=document.createElement('script');
s.type='text/javascript';
s.src='script.js';
document.getElementsByTagName('head')[0].appendChild(s);

它工作正常。但是,如果我创建一个具有相同行的 javascript: 小书签,我将获得一个包含以下字符串的空白页:

[object HTMLScriptElement]

而,如果我创建一个书签添加该行

void(null);

与以前的相比,网页不会消失,但脚本不会执行。

为什么?

4

1 回答 1

7

一种常见的做法是简单地使用自执行函数表达式,如下所示:

(function () {
  var s=document.createElement('script');
  s.type='text/javascript';
  s.src='script.js';
  document.getElementsByTagName('head')[0].appendChild(s);
}());

书签:

javascript:(function(){var s=document.createElement('script');s.type='text/javascript';s.src='script.js';document.getElementsByTagName('head')[0].appendChild(s);}());

该函数将返回undefined(未提供返回值)阻止导航。

另请注意,这将避免创建s可能与页面上使用的其他变量重叠的全局变量(如 ),因为所有变量都是在匿名函数的范围内创建的。

于 2010-02-08T15:12:37.903 回答