无法使用书签运行外部 JavaScript
对于 JS 完全是新手。
我需要使用外部脚本来修改当前页面中的某些元素,并将其作为书签进行访问。
如果我修改网页的html源代码插入以下<脚本>线路:
s=document.createElement('script');
s.type='text/javascript';
s.src='script.js';
document.getElementsByTagName('head')[0].appendChild(s);
效果很好。但是,如果我使用相同的行创建一个 javascript: bookmarklet,我会获得一个包含以下字符串的空白页面:
[object HTMLScriptElement]
而如果我创建一个 bookmarklet,将该行添加
void(null);
到之前的书签中,则网页不会消失,但脚本不会执行。
为什么?
Totally newbie about JS.
I need to use an external script which modifies some elements in the current page accessing it as a bookmarklet.
If I modify the html source code of the web page inserting the following < script > lines:
s=document.createElement('script');
s.type='text/javascript';
s.src='script.js';
document.getElementsByTagName('head')[0].appendChild(s);
it works fine. But if I create a javascript: bookmarklet with the same lines, I obtain a blank page with the following string:
[object HTMLScriptElement]
whereas, if I create a bookmarklet adding the line
void(null);
to previous ones, the web page does not disapper but the script is not executed.
Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
常见的做法是简单地使用自执行函数表达式,如下所示:
Bookmarklet:
该函数将返回
undefined
(不提供返回值),从而阻止导航。另请注意,这将避免创建与页面上使用的其他变量重叠的全局变量(如
s
),因为所有变量都是在匿名函数的范围内创建的。A common practice is to simply use a self-executing function expression, something like this:
Bookmarklet:
The function will return
undefined
(no return value supplied) preventing the navigation.Note also that this will avoid creating global variables (like
s
) that can overlap with other variables used on the page, because all variables are created in the scope of the anonymous function.