2011-10-04 43 views
3

从弹出窗口执行内容脚本时,有一种方法可让内容脚本将值返回到执行脚本的弹出窗口。从内容脚本返回值

+0

阅读[消息传递]谷歌的扩展文档(HTTP:/ /code.google.com/chrome/extensions/messaging.html#simple)。而不是在popup.html中做出回应,不要做任何事情,只要收到你的请求。您收到的请求可能是任何内容,例如您希望它返回到弹出文件的值。 但我认为你已经在使用消息传递,因为你说你正在执行弹出窗口中的内容脚本。如果这就是你正在做的事情,那么你应该能够在响应中返回值。 –

+0

我希望有一种方法可以让内容脚本返回一个值,而不是让它发送一个值并用弹出窗口捕获它。 – Bnicholas

+0

当你说'从弹出窗口执行内容脚本时',你的意思是你正在向内容脚本(从弹出窗口)发送一个请求来执行一个函数? –

回答

1

参照谷歌的Docs,使用以下代码:

contentscript.js
chrome.runtime.sendMessage({value: "hello"}, null); 

popup.html
chrome.runtime.onMessage.addListener(
    function myFunc(request, sender, sendResponse) { 
     doStuffWithValue(request.value); 
     chrome.runtime.onMessage.removeListener(myFunc); //if you want to stop listening after receiving the message 
    }); 
+0

这就是我现在设置的方式,我正在寻找一些更具可读性的东西,因为'.sendRequest'并不是一个真正的请求,因为它没有预期到响应。 – Bnicholas

+1

你可以把它放在像函数sendValue(value){chrome.extension.sendRequest({“value”:value},null)}的函数中,然后使用sendValue函数。可以让你更容易记住和理解它。 –

+0

这是一个不错的解决方案。可能不值得,除非有一堆请求。 – Bnicholas