【问题标题】:unable to run an external javascript using a bookmarklet无法使用小书签运行外部 javascript
【发布时间】:2023-03-26 06:57:01
【问题描述】:

完全是 JS 的新手。

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

如果我修改网页的 html 源代码插入以下

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

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

[object HTMLScriptElement]

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

void(null);

与之前的相比,网页没有消失,但脚本没有执行。

为什么?

【问题讨论】:

    标签: javascript bookmarklet


    【解决方案1】:

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

    (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),因为所有变量都是在匿名函数的范围内创建的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 2012-04-15
      相关资源
      最近更新 更多