2011-12-27 119 views
2

我想在弹出窗口中设置一个变量,标记为i,然后将其发送到后台页面。我相信我可以把这个变量作为“请求”,但我可能是错的。当我尝试运行扩展时,我得到:弹出窗口和背景Chrome扩展之间的工作

Uncaught TypeError: Cannot call method 'sendRequest' of undefined

我缺少什么?

这里是我的popup.html文件:

var i = 0; 
function start(){ 
    alert("working"); 
    chrome.tabs.sendRequest(i); 
} 

function add(){ 
    i++; 
    document.getElementById('box').value=i; 
} 

function sub(){ 
    i--; 
    document.getElementById('box').value=i; 
} 
+0

看看[这个问题](http://stackoverflow.com/questions/4865850/google-chrome-extension-develompent)帮助你解决你的情况。 – 2011-12-27 08:45:11

回答

4

你应该叫chrome.extension.getBackgroundPage功能去后台页面的窗口对象的引用。下面是一个例子,其中setIValue函数在后台页面中定义。

var i = 0, bgPage = chrome.extension.getBackgroundPage(); 
function start(){ 
    alert("working"); 
    bgPage.setIValue(i);   
} 
+0

感谢您的回复,现在如果可以的话,我还有一个问题。对于.setIValue(i);我如何指定我想改变的bgPage中的值? – easilyBaffled 2011-12-27 17:41:14

+0

你的意思是“什么变量”(而不是什么值)?如果你想设置一个在后台页面中定义的变量,只需编写'bgPage.myVariable = i' – 2011-12-27 18:02:27

+0

是否有我需要添加的任何权限?因为我得到一个“不能调用方法”getBackgroundPage“未定义”和后来“当我尝试bgPage.ctr = i时不能设置未定义的属性'ctr'; – easilyBaffled 2011-12-28 04:38:20

相关问题