Javascript Bookmarklet不工作
我正在创建一个bookmarklet,将facebook的all.js插入页面的Javascript Bookmarklet不工作,javascript,jquery,facebook,Javascript,Jquery,Facebook,我正在创建一个bookmarklet,将facebook的all.js插入页面的标题中,但是它也不能正常工作,这里是: javascript: (function() { var msg = ''; if (typeof window.FB == 'object') { msg = 'Already Facebookified'; } else { var js = document.createElement('script');
标题中
,但是它也不能正常工作,这里是:
javascript: (function() {
var msg = '';
if (typeof window.FB == 'object') {
msg = 'Already Facebookified';
} else {
var js = document.createElement('script');
js.id = 'facebook-jssdk';
js.async = true;
js.src = "http://connect.facebook.net/en_US/all.js";
document.getElementsByTagName('head')[0].appendChild(js);
msg = (typeof window.FB == 'object' ? 'Facebookified': 'Unable to Facebookify');
}
alert(msg);
})();
有人能提出它可能有什么问题吗?您可能希望在加载Facebook JS-SDK后使用
window.fbAsyncint
运行代码,并添加fb root
节点(某些功能需要此节点):
加载Facebook JS-SDK后,您可能希望使用
window.fbAsyninit
运行代码,并添加fb root
节点(某些功能需要此节点):
正如前面所指出的,您需要“监听”脚本才能完成加载。为此,至少有两个脚本元素事件可以挂接(onreadystatechange和onload)。您可以按如下方式设置它们:
javascript: (function() {
var isFacebookified = function () {
return typeof window.FB === 'object';
};
var scriptIsDoneLoading = function () {
var msg = (isFacebookified ? 'Facebookified': 'Unable to Facebookify');
alert(msg);
};
if (isFacebookified()) {
alert('Already Facebookified');
} else {
var js = document.createElement('script');
js.id = 'facebook-jssdk';
js.async = true;
js.src = "http://connect.facebook.net/en_US/all.js";
js.onreadystatechange = scriptIsDoneLoading;
js.onload = scriptIsDoneLoading;
document.getElementsByTagName('head')[0].appendChild(js);
}
})();
脚本加载完毕后,您应该会收到警报
希望这有帮助
Pete正如前面所指出的,您需要“监听”脚本才能完成加载。为此,至少有两个脚本元素事件可以挂接(onreadystatechange和onload)。您可以按如下方式设置它们:
javascript: (function() {
var isFacebookified = function () {
return typeof window.FB === 'object';
};
var scriptIsDoneLoading = function () {
var msg = (isFacebookified ? 'Facebookified': 'Unable to Facebookify');
alert(msg);
};
if (isFacebookified()) {
alert('Already Facebookified');
} else {
var js = document.createElement('script');
js.id = 'facebook-jssdk';
js.async = true;
js.src = "http://connect.facebook.net/en_US/all.js";
js.onreadystatechange = scriptIsDoneLoading;
js.onload = scriptIsDoneLoading;
document.getElementsByTagName('head')[0].appendChild(js);
}
})();
脚本加载完毕后,您应该会收到警报
希望这有帮助
Pete尝试异步加载脚本时,会出现一些常见错误。此代码应适用于:
function loadScript(src, callback) {
var s,
r;
s = document.createElement('script');
s.src = src;
s.onload = s.onreadystatechange = function () {
/**
* LOAD/READYSTATE LOGIC
* execute if the script hasn't been ready yet and:
* - the ready state isn't set
* - the ready state is complete
* - note: readyState == 'loaded' executes before the script gets called so
* we skip this event because it wouldn't have loaded the init event yet.
*/
if (!r && (!this.readyState || this.readyState === 'complete')) {
//set the ready flag to true to keep the event from initializing again
r = true;
callback();
}
};
document.body.appendChild(s);
}
您可以将其用作:
loadScript('http://connect.facebook.net/en_US/all.js', function () {console.log(window.FB)}
尝试异步加载脚本时,会出现一些常见错误。此代码应适用于:
function loadScript(src, callback) {
var s,
r;
s = document.createElement('script');
s.src = src;
s.onload = s.onreadystatechange = function () {
/**
* LOAD/READYSTATE LOGIC
* execute if the script hasn't been ready yet and:
* - the ready state isn't set
* - the ready state is complete
* - note: readyState == 'loaded' executes before the script gets called so
* we skip this event because it wouldn't have loaded the init event yet.
*/
if (!r && (!this.readyState || this.readyState === 'complete')) {
//set the ready flag to true to keep the event from initializing again
r = true;
callback();
}
};
document.body.appendChild(s);
}
您可以将其用作:
loadScript('http://connect.facebook.net/en_US/all.js', function () {console.log(window.FB)}
脚本是异步加载的,您需要侦听脚本以完成加载executing@zzzzBov:我不明白,你能详细说明我应该在代码中做什么更改吗?我想我的答案可能与此相关。@zzbov:谢谢你的帮助:)脚本是异步加载的,你需要听一听脚本才能完成executing@zzzzBov:我不明白,你能详细说明我应该在代码中做什么更改吗?我想我的答案可能是相关的。@zzzzBov:谢谢你的帮助:)谢谢,但它在控制台上返回了这个错误:
Uncaught SyntaxError:Unexpected token var
当我从bookmark运行它时。我已经修复了被剪断的代码(这是因为所有的行都是组合的,第8行的大括号后面需要分号)谢谢,但它在控制台上返回了这个错误:Uncaught SyntaxError:Unexpected token var
当我从bookmark运行它时。我已经修复了被剪断的部分(这是因为所有的行都是组合的,在第8行的大括号后面需要分号)这也没有帮助。当我把它放进书签并运行时,没有错误,我得到的消息已经面世了,但是使用firebugconsole.log(typeof window.FB)
返回未定义的Whoops!if(isFacebookified){
应该是if(isFacebookified()){
否则,我们将检查是否存在不调用它的函数。添加额外参数后,它对我有效。编辑响应以反映正确的代码。这也没有帮助。当我将其放入书签并运行时,没有错误,我得到的消息已通过firebugconsole.log(typeof window.FB)进行了Facebookified
返回undefined
Whoops!if(isFacebookified){
应该是if(isFacebookified()){
否则我们正在检查是否存在不调用它的函数。添加额外参数后,它对我有效。编辑响应以反映正确的代码。