我对javascript函数流有疑问。我正在构建一个chrome扩展,其中一个javascript文件使用window.open
创建一个弹出窗口。基于弹出窗口中选择的按钮,设置变量并调用原始javascript函数中的函数。但是,它没有从原始的javascript文件中识别出该功能。我不想将file1包含在file2的标题中,因为我不需要的其他函数将在file2中调用。我该如何处理这个案子?
我的代码片段如下:
在default_popup.html
中<html
<head>
<script type="text/javascript" src="login.js"></script>
</head>
</html>
在login.js
中function login() {
if (token === null) {
var url = chrome.extension.getURL('options.html');
window.open(url);
}
else {....}
function auth(url) {
............
}
//other functions here
options.html中的
<html>
<head>
<script type="text/javascript" src="redirect.js"></script>
</head>
<body>
<button id="button1">Option1</button>
<button id="button2">Option2</button>
</body>
</html>
in redirect.js
var url;
document.getElementById('button1').onclick = function() {
url = 'url_one.com';
auth(url)
}
document.getElementById('button2').onclick = function() {
url = 'url_two.com';
auth(url);
}
答案 0 :(得分:3)
创建一个不同的JS文件,您可以将其命名为common.js。
传输两个文件都需要访问的所有功能。
答案 1 :(得分:0)
可能会在窗口引用中传递function
,但是由于&#34;相同的原始安全主体&#34;,Chrome安全设置可能会干扰本地文件,它可以在本地其他浏览器中使用,不确定服务器页面和扩展名,所以值得测试,请按照示例:
HTML1:
<html>
<head>
<script type="text/javascript">
function test(){
var windowRef = window.open('test2.html');
windowRef['auth'] = function(){windowRef.document.write('property transferred')}
}//here you'll reference your auth function.
</script>
</head>
<body>
<input type="button" value="test" onclick="test()" >
</body>
</html>
HTML2:
<html>
<head>
<script type="text/javascript">
window['auth']() //the function to call, window.auth() should work too.
</script>
</head>
<body>
new window
</body>
</html>
输出将是一个新窗口,其中&#34;属性已转移&#34;在它。