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 回答