1

background.js に次のコードがあります。

appAPI.contextMenu.add("key2", "Add", function (data) {
var key=0;
alert('hi'+data.selectedText);
var tableRow = $("td").filter(function() {
            return $(this).text() == data.selectedText;
        }).closest("tr");

alert("1");         
alert(tableRow+'sds');
        if(tableRow===null)
        {
            alert("Please select proper text so that course can be selected, this would title or coursenumber");
            return;

        }   
        var title=tableRow.find('td').eq(7).text();
        var days=tableRow.find('td').eq(8).text();
        var time=tableRow.find('td').eq(9).text();
        timeSplit=time.split('-');
        var startTime,endTime;
        startTime=getTime(timeSplit[0]);           
        endTime=getTime(timeSplit[1]);
        var loc=tableRow.find('td').eq(10).text();
        var instructor=tableRow.find('td').eq(12).text();

        key=key+1;
        courseData=[{'id':key,'title':title,'days':days,'startTime':startTime,'endTime':endTime,'loc':loc,'instructor':instructor}];

        var dbData=appAPI.db.get('course_Data');
        if(dbData===null)
        {
            dbData=courseData;
        }
        else
        {
          dbData.push({'id':key,'title':title,'days':days,'startTime':startTime,'endTime':endTime,'loc':loc,'instructor':instructor});
        }
        alert(dbData[key-1]['title']);
        appAPI.db.set('course_Data',dbData);


  }, ["all"]);

extension.js に保持している場合と同じコードは、appAPI selectedText メソッドで完全に正常に動作しますが、バックグラウンドでは jquery 部分が動作しないようです。選択した値に基づいてテーブル トウを除外する前に、jquery コードを使用して alert('1') ステートメントに到達できないためです。

4

2 に答える 2

4

Crossrider バックグラウンド スコープは現時点で jQuery をサポートしていないため、background.js でコードが機能しません。

通常の DOM オブジェクト (ウィンドウ、ドキュメントなど) を使用して、バックグラウンド スコープで同じ結果を得ることができます。

于 2013-01-03T14:17:44.897 に答える
0

スクリプトが表示されない場合はalert('1')、スクリプトの前に突然終了するか、無期限にループする必要があります。これらのjQuery呼び出しが無期限にループする可能性はないと思うので、dataオブジェクトにフィールドが含まれていないためにクラッシュすると思いselectedTextます。それは可能ですか?

于 2013-01-03T08:50:37.543 に答える