在没有包含的另一个javascript文件中调用javascript函数

时间:2015-08-05 00:59:13

标签: javascript jquery html google-chrome-extension

我对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);
 }

2 个答案:

答案 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;在它。