在函数中引用外部JavaScript文件

时间:2012-03-22 16:10:18

标签: javascript hmac

是否可以在JavaScript函数中引用JavaScript文件?

因此我想转换它:

<script type="text/javascript" src="http://crypto-js.googlecode.com/files/2.5.3-crypto-sha1-hmac.js"></script>
<script type="text/javascript">

var hmacString = Crypto.HMAC(Crypto.SHA1, "Message", "Secret Passphrase", { asString: true });

</script>

进入:

function hmac (input){

  var hmacString = Crypto.HMAC(Crypto.SHA1, "Message", "KEY", { asString: true });

  return hmacString;

}

我正在使用一个名为Cast Iron的工具,因此将JavaScript限制为仅限一个函数,但我需要调用外部文件,以加载所需的功能。

这甚至可能吗?

3 个答案:

答案 0 :(得分:0)

如果我理解正确,是的,只要在尝试访问它之前加载了另一个类,就可以从一个JS文件访问函数和类。

因此,如果some-javascript-file.js有一个名为getThings()的函数,那么您可以这样做:

<script type="text/javascript" src="http://cdn.example.com/js/some-javascript-file.js"></script>
<script type="text/javascript">
    var things = getThings(); // getThings is a publicly accessible function in an external class.
</script>

答案 1 :(得分:0)

确定截图有点帮助。看起来你想从外部JS文件中获取一些东西,并在这个函数中操作它。

所以你可以有一个javascript文件:

var foo = 'foo'; //this is in the global scope

然后你的另一个文件有:

function hmac(key){
    alert(document.foo);
}

应该访问你想要的内容

答案 2 :(得分:0)

是的,您可以使用javascript加载其他js文件。根据执行函数的加载状态,您可以使用

document.write('<script type="text/javascript" src="http://crypto-js.googlecode.com/files/2.5.3-crypto-sha1-hmac.js"'+'><'+'/script>"');
// loads synchronouly and executes
Crypto.HMAC(...); // is available here

注意一旦加载了DOM,document.write就会破坏整个页面。您也可以使用:

var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://crypto-js.googlecode.com/files/2.5.3-crypto-sha1-hmac.js";
s.onload = function() {
    // the file should be executed now so
    Crypto.HMAC(...); // is available here
};
document.head.appendChild(s); // load asychronously

另见Load js from external site on fly