suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Der JS-Vorgang zum Öffnen einer neuen Seite wird abgefangen. Wie kann das Problem gelöst werden?

Es gibt ein Onclick-Ereignis für eine Schaltfläche auf der Seite. Der Klick löst js aus und sendet eine Ajax-Anfrage an den Hintergrund. Nach einer Reihe von Beurteilungen gibt der Hintergrund die URL an js zurück

<a class="a" id="k_id" href="javascript:void(0);" onclick="test($(this),id1,id2);"></a>
function test(){
    //发送ajax请求...返回一个url
    var url = "ajax请求返回的url";
    
    //js操作将返回的url赋值到页面上的a标签,然后js模拟a标签点击事件
    $(oElement).attr("href",url);
    $(oElement).removeAttr("onclick");
    var id = $(oElement).attr("id");
    document.getElementById(id).click();//这里点击a标签
    
    //这样的操作会被浏览器拦截,
}

求解

高洛峰高洛峰2785 Tage vor911

Antworte allen(8)Ich werde antworten

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-30 09:58:28

    你可以直接跳转到该url吧,为啥要模拟点击, 直接 window.location.href = url

    Antwort
    0
  • PHP中文网

    PHP中文网2017-06-30 09:58:28

    onclick监听了click事件,这样就先触发调用test方法,一直重复调用了,一直触发不了herf跳转

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-06-30 09:58:28

    发送ajax之后,不用模拟a标签点击事件,直接location.href = 需要跳转的url 就可以了

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-30 09:58:28

    跳转页面时,没有必要去除 aonclick 事件;
    需要去除的话当前方式直接 t.onclick = null; 即可

    <a class="a" id="k_id" href="javascript:void(0);" onclick="test(this)">123123</a>
    function test(t) {
        var url = "http://www.baidu.com";
        t.setAttribute("href", url);
        t.onclick = null;
        t.click();
    }

    Antwort
    0
  • 某草草

    某草草2017-06-30 09:58:28

    可以试试
    新开页面:window.location.href = url;
    新开窗口:window.open(url);

    Antwort
    0
  • ringa_lee

    ringa_lee2017-06-30 09:58:28

    直接用window.location.href不是更好吗?

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-06-30 09:58:28

    a标签有默认的click事件,估计onClick与默认事件冲突了。

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-06-30 09:58:28

    是因为有异步操作,浏览器会拦截 window.open()

    可以把 ajax 改成同步,或是想办法前端计算 url。

    Antwort
    0
  • StornierenAntwort