【问题标题】:Message Passing is not working in chrome extention消息传递在 chrome 扩展中不起作用
【发布时间】:2015-12-26 05:41:13
【问题描述】:

我正在尝试将消息从我的 Default_popup.js 传递到内容脚本,当它在内容脚本结束时收到,然后尝试将数据保存在 chrome 存储中。但我的代码运行不正常。

此代码运行了 2-3 次。但现在它不工作了。

manifest.json

{
    "manifest_version": 2,

    "name": "Test",
    "description": "Automated Test Tool.",
    "version": "1.0",

    "browser_action": {
        "default_icon": "icon.png",
        "default_popup": "Default_Popup.html"
    },
    "content_scripts": [{
        "matches":["http://*/*","https://*/*"],
        "js":["myscript.js"]    }
    ],
    "background":{
        "scripts":["background.js"]
    },

    "permissions":[
        "storage",
         "notifications",
         "tabs",
         "http://*/",
         "https://*/"
    ]
}

Popup.js

chrome.tabs.getSelected(null, function (tab) {
    var Jour = {};
    Jour.FromStation = $('#txtFromStation').val();
    Jour.ToStation = $('#txtToStation').val();
    Jour.JourneyDate = $('#datepicker').val();
    chrome.tabs.sendRequest(tab.id, { JourneyDetails: Jour }, function handler(response) {
        alert("Inside Client = " + "Done");
    });
});

myscript.js //内容脚本

window.onload = function () {

    chrome.extension.onRequest.addListener(
        function (request, sender, sendResponse) {
            alert('request.JourneyDetails.FromStation');
            alert(request.JourneyDetails.FromStation);
            var Jour = {};
            Jour.FromStation = request.FromStation;
            Jour.ToStation = request.ToStation;
            Jour.JourneyDate = request.JourneyDate;
            chrome.storage.sync.set({ JourneyDetails: Jour }, function () {
                console.log('Setting Saved')
            });
            //sendResponse({ counter2: "5" });      
       }
    );
}

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用

标签: javascript jquery google-chrome google-chrome-extension message-passing


【解决方案1】:
  1. chrome.tabs.getSelected() 已弃用,尝试改用 chrome.tabs.query() 吗? https://developer.chrome.com/extensions/tabs#method-getSelected
  2. chrome.tabs.sendRequest()chrome.extension.onRequest() 已弃用,尝试改用 chrome.tabs.sendMessage()chrome.runtime.onMessage() 吗? https://developer.chrome.com/extensions/tabs#method-sendRequest, https://developer.chrome.com/extensions/extension#event-onRequest
  3. 您是否在 Default_Popup.html 中包含 jQuery?您看到了什么错误?
  4. 在 Default_Popup.html 中是否有 ID 为 $('#txtFromStation'), $('#txtToStation'), $('#datepicker') 的元素?如果您可以发布 Default_Popup.html 的内容,那将会很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多