Javascript <;a>;onClick事件,但仍继续执行href目标

Javascript <;a>;onClick事件,但仍继续执行href目标,javascript,html,jsonp,Javascript,Html,Jsonp,我有一个链接如下: <a onclick="runSomeJsonpCall();" href="www.goherenext.com"> make this work </a> 我的JSONP调用从未真正执行过,除非我在onlick事件中返回false,但是href当然不会导航到目标 我怎样才能让这两件事都起作用 注意:我只能使用纯JavaScript,没有库您应该阻止默认事件。。。 看那里:像那样的东西 function runSomeJsonpCall(event

我有一个链接如下:

<a onclick="runSomeJsonpCall();" href="www.goherenext.com"> make this work </a>
我的JSONP调用从未真正执行过,除非我在onlick事件中返回false,但是href当然不会导航到目标

我怎样才能让这两件事都起作用


注意:我只能使用纯JavaScript,没有库

您应该阻止默认事件。。。 看那里:像那样的东西

function runSomeJsonpCall(event) {

    if (!event) var event = window.event;
    if (event.preventDefault) {
       event.preventDefault();
    }else{
       // IE
       event.returnValue = false;
    }
    var script = document.createElement("script");
    script.src = "http://jsonpurl.com?parameter1=" + "someparam";
    document.body.appendChild(script);

   // you should wait for jsonp loading
   // here i use an ID to retreive  the element but you can do your way ...
   setTimeout("changeLocation('"+ document.getElementById('linkID').href +"')", 1000);
}
changeLocation(location) {
    window.location.href = location;
} 

我真的不喜欢使用内联onclick属性,我会使用addEventListener或attachEvent。。。我认为这是一个更好的方法:)

你应该防止默认事件。。。 看那里:像那样的东西

function runSomeJsonpCall(event) {

    if (!event) var event = window.event;
    if (event.preventDefault) {
       event.preventDefault();
    }else{
       // IE
       event.returnValue = false;
    }
    var script = document.createElement("script");
    script.src = "http://jsonpurl.com?parameter1=" + "someparam";
    document.body.appendChild(script);

   // you should wait for jsonp loading
   // here i use an ID to retreive  the element but you can do your way ...
   setTimeout("changeLocation('"+ document.getElementById('linkID').href +"')", 1000);
}
changeLocation(location) {
    window.location.href = location;
} 
我真的不喜欢使用内联onclick属性,我会使用addEventListener或attachEvent。。。我认为这是一种更好的方式:)

函数runSomeJsonpCall(obj){
//...
document.location=obj.getAttribute('href');
返回false;
}
另请注意http://in href link

函数runSomeJsonpCall(obj){
//...
document.location=obj.getAttribute('href');
返回false;
}
另请注意http://in href链接

尝试:

<a onclick="runSomeJsonpCall();" href="#"> make this work </a>
尝试:


您可以尝试使用JavaScript设置window.location,作为onclick事件的一部分。据我所知,
onclick
href
属性是互斥的。只需将重定向作为json调用的一部分。tom所说的可能会起作用。奇怪的是,为什么您要插入一个脚本标记,并且还要导航到别处(并且在同一个选项卡上)?脚本甚至无法加载…它是一个跟踪模块,注入的jsonp调用跟踪链接被单击。@redolent反应式UI,现在非常流行。您可以尝试使用JavaScript设置window.location,作为onclick事件的一部分。据我所知,
onclick
href
属性是互斥的。只需将重定向作为json调用的一部分。tom所说的可能会起作用。奇怪的是,为什么您要插入一个脚本标记,并且还要导航到别处(并且在同一个选项卡上)?该脚本甚至无法加载…它是一个跟踪模块,注入的jsonp调用跟踪单击的链接。@redolent反应式用户界面,现在非常流行。使用了此代码的简化版本(没有使用preventdefault,只是“return false”)。setTimeout()是必需的,尽管我将其缩短为50ms。使用了此代码的简化版本(没有使用preventdefault,只是“return false”)。setTimeout()是必需的,尽管我将其缩短为50ms。
<a onclick="runSomeJsonpCall();" href="#"> make this work </a>
function runSomeJsonpCall() {
var script = document.createElement("script");
script.src = "http://jsonpurl.com?parameter1=" + "someparam";
document.body.appendChild(script);
window.location("www.goherenext.com");
}