Javascript 函数在未被调用的情况下执行?
Javascript Function executes..without being invoked?
<a onclick="determineCountry(data)" class="installbtn">Install</a>
我想做什么:
单击上面的按钮后,用户将被重定向到三个站点之一,具体取决于 his/her 位置。但是,下面的脚本会立即执行并在页面加载后立即重定向用户,而不是在单击按钮时(按预期)。我究竟做错了什么?请帮我解决这个问题。
<script>
function determineCountry(data){
switch(data.address.country_code){
case "US" :
window.location.href = "https://www.usa.com";
break;
case "GB" :
window.location.href = "https://www.gb.com";
break;
default :
window.location.href = "http://www.google.com";
}
}
</script>
<script type="text/javascript" src="http://api.wipmania.com/jsonp?callback=determineCountry></script>
你的最后一行加载了一个 JSONP 网站。 JSONP 的工作原理是让服务器发回调用函数的 Javascript。当您指定 callback=determineCountry
时,它会告诉它在 Javascript 中调用该函数。所以最后的脚本包含一个顶级调用,如:
determineCountry({ some JSON object });
加载脚本时,它会立即运行函数。
通常 JSONP 在 AJAX 调用中使用,而不是直接在 <script>
标记中使用。所以你可能只想删除行
<script type="text/javascript" src="http://api.wipmania.com/jsonp?callback=determineCountry></script>
实际上,看起来您真正需要做的是在用户单击锚点时执行 JSONP AJAX 调用:
<a onclick="ajaxDetermineCountry();" href="#" class="installbtn">Install</a>
<script>
function ajaxDetermineCountry() {
var script = document.createElement('script');
script.src = "http://api.wipmania.com/jsonp?callback=determineCountry";
document.head.appendChild(script);
}
function determineCountry(data){
switch(data.address.country_code){
case "US" :
window.location.href = "https://www.usa.com";
break;
case "GB" :
window.location.href = "https://www.gb.com";
break;
default :
window.location.href = "http://www.google.com";
}
}
</script>
<a onclick="determineCountry(data)" class="installbtn">Install</a>
我想做什么: 单击上面的按钮后,用户将被重定向到三个站点之一,具体取决于 his/her 位置。但是,下面的脚本会立即执行并在页面加载后立即重定向用户,而不是在单击按钮时(按预期)。我究竟做错了什么?请帮我解决这个问题。
<script>
function determineCountry(data){
switch(data.address.country_code){
case "US" :
window.location.href = "https://www.usa.com";
break;
case "GB" :
window.location.href = "https://www.gb.com";
break;
default :
window.location.href = "http://www.google.com";
}
}
</script>
<script type="text/javascript" src="http://api.wipmania.com/jsonp?callback=determineCountry></script>
你的最后一行加载了一个 JSONP 网站。 JSONP 的工作原理是让服务器发回调用函数的 Javascript。当您指定 callback=determineCountry
时,它会告诉它在 Javascript 中调用该函数。所以最后的脚本包含一个顶级调用,如:
determineCountry({ some JSON object });
加载脚本时,它会立即运行函数。
通常 JSONP 在 AJAX 调用中使用,而不是直接在 <script>
标记中使用。所以你可能只想删除行
<script type="text/javascript" src="http://api.wipmania.com/jsonp?callback=determineCountry></script>
实际上,看起来您真正需要做的是在用户单击锚点时执行 JSONP AJAX 调用:
<a onclick="ajaxDetermineCountry();" href="#" class="installbtn">Install</a>
<script>
function ajaxDetermineCountry() {
var script = document.createElement('script');
script.src = "http://api.wipmania.com/jsonp?callback=determineCountry";
document.head.appendChild(script);
}
function determineCountry(data){
switch(data.address.country_code){
case "US" :
window.location.href = "https://www.usa.com";
break;
case "GB" :
window.location.href = "https://www.gb.com";
break;
default :
window.location.href = "http://www.google.com";
}
}
</script>