Javascript 在crossrider后台上下文菜单中使用jquery

Javascript 在crossrider后台上下文菜单中使用jquery,javascript,jquery,cross-browser,crossrider,Javascript,Jquery,Cross Browser,Crossrider,我在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"); aler

我在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')语句,以便根据所选值筛选出表TOW

嗯,如果您没有看到任何
警报('1')
脚本必须在它之前突然终止,或者无限期循环。我认为那些jQuery调用不可能无限循环,所以我猜它会崩溃,因为您的
data
对象不包含任何
selectedText
字段。这可能吗?

如果您没有看到任何
警报('1')
脚本必须在它之前突然终止,或者无限期循环。我认为那些jQuery调用不可能无限循环,所以我猜它会崩溃,因为您的
data
对象不包含任何
selectedText
字段。这可能吗?

Crossrider后台作用域目前不支持jQuery,这就是为什么您的代码不能在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"]);

您可以使用常规DOM对象(例如窗口、文档)在后台作用域中实现相同的结果。

Crossrider后台作用域目前不支持jQuery,这就是您的代码在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"]);

您可以使用常规DOM对象(例如窗口、文档)在后台作用域中实现相同的结果。

我希望它们添加支持,否则将是浪费。很抱歉,我在从后台作用域访问表时犯了一个错误。根据体系结构,后台作用域无法访问页面DOM,因此即使jQuery和窗口/文档对象也无法访问表,因为它们引用后台作用域的DOM。但是,您可以通过从后台范围到相关页面选项卡,然后在扩展的页面代码(extension.js)中运行代码来处理表来实现目标。如果您在这方面需要任何帮助,请告诉我。我希望他们添加支持,否则将是浪费。抱歉,我在从后台作用域访问表时出错。根据体系结构,后台作用域无法访问页面DOM,因此即使jQuery和窗口/文档对象也无法访问表,因为它们引用后台作用域的DOM。但是,您可以通过从后台范围到相关页面选项卡,然后在扩展的页面代码(extension.js)中运行代码来处理表来实现目标。如果你需要任何帮助,请告诉我。