Bookmarklet继续前往新页面

Gre*_*reg 4 javascript jquery bookmarklet hyperlink

我制作了这个书签:

javascript:(function(){var s=document.createElement('script');s.setAttribute('src','http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');document.getElementsByTagName('body')[0].appendChild(s);$('#hldIntMain').hide();$('#fadeBackground').hide();return false;})()
Run Code Online (Sandbox Code Playgroud)

格式化代码:

// Add in jQuery
var s=document.createElement('script');
s.setAttribute('src','http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
document.getElementsByTagName('body')[0].appendChild(s); 
// Make page viewable
$('#idIntMain').hide();
$('#idBackground').hide();
return false;
Run Code Online (Sandbox Code Playgroud)

但每当我运行它时,它会在完成工作后加载一个空白页面.我究竟做错了什么?

CMS*_*CMS 6

对于空白页问题,您不应该返回false,并且由于您使用的是自动调用匿名函数,因此您只需删除return语句即可.

函数默认情况下,当函数体上没有return语句时,它们返回undefined值,这将阻止导航到空白页面.

例如:

javascript:(function () { return false; })();
Run Code Online (Sandbox Code Playgroud)

将显示一个空白页面,其中包含返回值的字符串表示形式,在这种情况下为"false".

javascript:(function () {})();
Run Code Online (Sandbox Code Playgroud)

浏览器无法导航.

之后我有几点评论:

该文件将异步加载,您不能100%确定在更改src元素的属性后立即加载jQuery ,您可以使用元素的load事件script(readystatechange对于IE).

我还建议你将script元素附加到head.