如何将参数传递给匿名Javascript函数?
我正在写一个简单的计数器,我想让这个计数器的安装对于用户来说非常简单。我见过的最简单的计数器代码之一(针对安装它的用户)是谷歌分析代码 因此,我想将主代码存储在一个文件中,安装我的计数器的用户只需按如下方式设置websiteID:如何将参数传递给匿名Javascript函数?,javascript,anonymous-function,lambda,Javascript,Anonymous Function,Lambda,我正在写一个简单的计数器,我想让这个计数器的安装对于用户来说非常简单。我见过的最简单的计数器代码之一(针对安装它的用户)是谷歌分析代码 因此,我想将主代码存储在一个文件中,安装我的计数器的用户只需按如下方式设置websiteID: <html><head><title></title></head><body> <script type="text/javascript" src="http://counterhost
<html><head><title></title></head><body>
<script type="text/javascript" src="http://counterhost.lan/tm.js">
var websiteId = 'XXXXX';
</script>
</body></html>
我试图理解Google Analytics javascript代码,但没有做到这一点。有人能建议我如何在标签之间指定变量,然后在javascript文件中的匿名函数中读取它吗?
谢谢。我不太清楚你在问什么,但是
您可以使用id
属性标记任何HTML元素,然后使用检索该特定元素 您还可以为任何HTML元素提供用户定义的属性,这些属性具有您自己选择的名称,然后在Javascript中为该元素获取并设置它们。我不完全清楚您的要求,但是 您可以使用
id
属性标记任何HTML元素,然后使用检索该特定元素
您还可以为任何HTML元素提供用户定义的属性,这些属性具有您自己选择的名称,然后在Javascript中为该元素获取并设置它们。在您的示例中,
websiteId
是一个全局变量。因此,它在任何地方都可以访问,包括匿名函数,除非存在同名的局部变量
<script> var websiteId = "something"; </script>
在您的示例中,
websiteId
是一个全局变量。因此,它在任何地方都可以访问,包括匿名函数,除非存在同名的局部变量
<script> var websiteId = "something"; </script>
我认为您对如何调用JS对象有点困惑
z
是一个字符串,“u gat”
。无法对其调用aa()
,因为字符串没有名为aa
的成员aa
是存储在局部变量中的独立函数。即使调用了aa()
,它也不会返回任何内容,因此在其结果上使用new
操作符是毫无意义的<代码>新建只能在构造函数上调用
我猜你的意思是:
var _gat= function() {
// Private variable
//
var data= null;
// Object to put in window._gat
//
return {
// Set the private variable
//
init: function(d) {
data= d;
}
};
}();
然后调用
\u gat.init('foo')
,就像在第二个示例中那样,将变量设置为website ID'foo'
。这是因为\u gat
对象是在匿名函数中定义的返回{init:function(){…}
对象,在隐藏的数据
变量上保留一个引用(“闭包”)。我认为您对如何调用JS对象有点困惑
z
是一个字符串,“u gat”
。无法对其调用aa()
,因为字符串没有名为aa
的成员aa
是存储在局部变量中的独立函数。即使调用了aa()
,它也不会返回任何内容,因此在其结果上使用new
操作符是毫无意义的<代码>新建只能在构造函数上调用
我猜你的意思是:
var _gat= function() {
// Private variable
//
var data= null;
// Object to put in window._gat
//
return {
// Set the private variable
//
init: function(d) {
data= d;
}
};
}();
然后调用\u gat.init('foo')
,就像在第二个示例中那样,将变量设置为website ID'foo'
。这是因为\u gat
对象是在匿名函数中定义的返回{init:function(){…}
对象,在隐藏的数据
变量上保留一个引用(“闭包”)
有谁能建议我如何在标记之间指定变量,然后读取它[…]
如果您的标记同时具有SRC属性和JS内容,则不会
<script type="text/javascript" src="http:/x.com/x.js"></script>
。。不同于,
<script type="text/javascript">
var x = 1;
</script>
var x=1;
Dojo是一个可选地将JS变量添加到脚本标记的框架。因此,如果您使用的是Dojo,您可以通过编写
<script type="text/javascript" src="mxclientsystem/dojo/dojo.js"
djConfig="
usePlainJson: true,
parseOnLoad: true
">
</script>
Dojo通过运行脚本标记并计算定制的djConfig属性来实现这一点
然而,这并不能解决你的问题
您确实需要两个脚本标记。一句话,
<script type="text/javascript">
var websiteId = '123456';
</script>
var-websiteId='123456';
将设置一个全局变量websiteId和第二个变量
<script type="text/javascript" src="http:/x.com/myreporter.js"></script>
它可以从任何地方加载并读取websiteId变量,我想,还可以报告它
有谁能建议我如何在标记之间指定变量,然后读取它[…]
如果您的标记同时具有SRC属性和JS内容,则不会
<script type="text/javascript" src="http:/x.com/x.js"></script>
。。不同于,
<script type="text/javascript">
var x = 1;
</script>
var x=1;
Dojo是一个可选地将JS变量添加到脚本标记的框架。因此,如果您使用的是Dojo,您可以通过编写
<script type="text/javascript" src="mxclientsystem/dojo/dojo.js"
djConfig="
usePlainJson: true,
parseOnLoad: true
">
</script>
Dojo通过运行脚本标记并计算定制的djConfig属性来实现这一点
然而,这并不能解决你的问题
您确实需要两个脚本标记。一句话,
<script type="text/javascript">
var websiteId = '123456';
</script>
var-websiteId='123456';
将设置一个全局变量websiteId和第二个变量
<script type="text/javascript" src="http:/x.com/myreporter.js"></script>
它可以从任何地方加载并读取websiteId变量,我想,还可以报告它 您可以将变量传递给匿名函数,如下所示:
(function(arg1, arg2, arg3) {
alert(arg1);
alert(arg2);
alert(arg3);
})("let's", "go", "redsox");
// will alert "let's", then "go", then "redsox" :)
您可以将变量传递给匿名函数,如下所示:
(function(arg1, arg2, arg3) {
alert(arg1);
alert(arg2);
alert(arg3);
})("let's", "go", "redsox");
// will alert "let's", then "go", then "redsox" :)
如果指定
src
属性作为script
元素的一部分,则script
元素标记本身中的任何代码都不会执行。但是,您可以使用以下代码添加此功能。我从Crockford(我相信是他)那里得到了这项技术,他在演讲中使用了这项技术,讨论了渲染性能和异步加载脚本到页面中的无关主题
JavaScript:
(function() {
// Using inner class example from bobince's answer
var _gat = (function() {
var data= null;
return {
init: function(d) {
console.info("Configuration data: ", d);
data = d;
}
}
})();
// Method 1: Extract configuration by ID (SEE FOOT NOTE)
var config = document.getElementById("my-counter-apps-unique-and-long-to-avoid-collision-id").innerHTML;
// Method 2: search all script tags for the script with the expected name
var scripts = document.getElementsByTagName("script");
for ( var i=0, l=scripts.length; i<l; ++i ) {
if ( scripts[i].src = "some-script.js" ) {
config = scripts[i].innerHTML;
break;
}
}
_gat.init( eval("(" +config+ ")") );
})();
(函数(){
//使用bobince答案中的内部类示例
var_gat=(函数(){
var数据=null;
返回{
init:函数(d){
控制台信息(“配置数据:”,d);
数据=d;