0

ページ上のすべてのビデオを一覧表示する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();
}

ヘルプ/ポインタをいただければ幸いです。

OK、私はついに自分でそれを理解しました。これは、同じ問題に遭遇する可能性のある他の人に向けたものです。dataType:'jsonp'、TO dataType:'json'を変更します。これで完了です。理由はわかりませんが、FFは拡張機能内からの「jsonp」呼び出しをサポートしていないようです。ここで注意すべきことの1つは、FF拡張機能の内部では、拡張機能がクロスドメインajax呼び出しを自由に行えるため、とにかく「jsonp」は必要ないということです。これがお役に立てば幸いです。

4

2 に答える 2

0

拡張機能を完全にインストールしましたか?.xulファイルを実行するだけでは不十分です。AJAXリクエストなどを実行させる前に、拡張機能を「信頼」していることをFirefoxに通知するために適切にインストールする必要があります。

于 2012-07-23T08:06:44.400 に答える
0

OK、SomeKittensが要求したように、私は自分の質問に答えています(私がそれを行うことができるとは知りませんでした)。

この問題の解決策は、dataType:'jsonp'、To dataType:'json'を変更することです。

理由はわかりませんが、FFは拡張機能内からの「jsonp」呼び出しをサポートしていないようです。ここで注意すべきことの1つは、FF拡張機能の内部では、拡張機能がクロスドメインajax呼び出しを自由に行えるため、とにかく「jsonp」は必要ないということです。これがお役に立てば幸いです。

質問自体にも回答を提供しました。

于 2012-08-01T04:52:52.547 に答える