我正在尝试制作一个firefox扩展程序,它会列出页面上的所有视频。我已经把它作为普通的js脚本(不作为扩展名)工作,所以我知道脚本可以工作。
我的问题是我的firefox扩展程序中的$ .ajax根本没有被调用。如果我查看错误控制台,它会显示一条消息,如“不安全地使用Jquery”。我试过搜索谷歌和其他网站,但我无法提出解决方案。
以下是问题所在的代码:
var listMainVid = function ()
{
// Make a JSONP call. We are using JSONP instead of JSON because we have to make a cross-domain AJAX call
$.ajax({
url: vidinfo_q_url + "?jsoncallback=?", // Don't forget to put in the 'jsoncallback=' part
dataType: 'jsonp', // Make a JSONP request, have it received as text, and interpreted by jQuery as JSON: "jsonp text xml."
data: {
video_url: '' + doc.document.location
},
success: function ( data, textStatus, jqXHR ) // Keep in mind that this is just the request sending success.
{
if ( data.status === 'SUCCESS' )
{
var vid_loc = data.url, img_url=data.image_url;
if( Object.prototype.toString.call( vid_loc ) === '[object Array]' ) // Check if it's an array
vid_loc = data.url[0];
if( Object.prototype.toString.call( img_url ) === '[object Array]' ) // Check if it's an array
img_url = data.image_url[0];
addVideoToVidDiv( data.id, vid_loc, img_url );
}
else // Error
{
//alert ( " Error! Data=" + data.status );
}
afterMainVid();
},
error: function( xhRequest, ErrorText, thrownError )
{
Application.console.log( " Can't do because: " + ErrorText + ", " + thrownError );
afterMainVid();
}
});
afterMainVid();
}
非常感谢任何帮助/指示。
好吧,我终于自己想出来了。这是任何可能遇到同样问题的人。更改dataType:'jsonp',TO dataType:'json',就是这样!我不知道为什么但FF似乎不支持来自内部扩展的'jsonp'调用。这里需要注意的一点是,在FF扩展中,你不需要'jsonp',因为扩展可以自由地进行跨域ajax调用。希望这会有所帮助。答案 0 :(得分:0)
您是否完全安装了扩展程序?您不能只执行.xul文件,您必须正确安装它才能让Firefox知道您“信任”扩展程序,然后才能执行类似AJAX请求的操作。
答案 1 :(得分:0)
好的,正如SomeKittens所要求的那样,我正在回答我自己的问题(我不知道我能做到这一点)。
问题的解决方案是更改dataType:' jsonp',To dataType:' json'。
我不知道为什么,但FF似乎不支持' jsonp'来自内部扩展的调用。这里需要注意的一点是,在FF扩展中,你不需要' jsonp'无论如何,扩展可以自由地进行跨域ajax调用。希望这会有所帮助。
我也在问题本身中提供了答案。