javascript - js操作新開頁面會被攔截,如何解決?
高洛峰
高洛峰 2017-06-30 09:56:28
0
8
892

頁面上一個按鈕,有個onclick事件,點擊觸發js,發送ajax請求到後台,後台經過一系列判斷,返回url到js

<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标签
    
    //这样的操作会被浏览器拦截,
}

求解

#
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(8)
曾经蜡笔没有小新

你可以直接跳到該url吧,為啥要模擬點擊, 直接 window.location.href = url

洪涛

onclick監聽了click事件,這樣就先觸發呼叫test方法,一直重複呼叫了,一直觸發不了herf跳轉

漂亮男人

發送ajax之後,不用模擬a標籤點擊事件,直接location.href = 需要跳轉的url 就可以了

给我你的怀抱

跳轉頁時,沒有必要去除 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();
}
某草草

可以試試看
新開頁:window.location.href = url;
新開視窗:window.open(url);

ringa_lee

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

世界只因有你

a標籤有預設的click事件,估計onClick與預設事件衝突了。

漂亮男人

是因為有非同步操作,瀏覽器會攔截 window.open()

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板