2014-05-22 44 views
0

因此,我通過單擊按鈕以編程方式在Javascript中創建表單。這部分工作正常。無法在iPad上使用JS創建的表單打開第二個新選項卡

當我檢測到用戶正在使用iPad時,我想將表單提交到Safari中的新窗口/選項卡。這也可以,但只是一次。第二次嘗試它沒有提交出於某種原因。 Safari調試器不會給我任何錯誤,<form>創建完美,但它不會打開新窗口。

一些代碼,我有:

var form = document.createElement("form"); 

    var hiddenField = document.createElement("input"); 
    hiddenField.setAttribute("type", "hidden"); 
    hiddenField.setAttribute("name", "product_id"); 
    hiddenField.setAttribute("value", code); 

    form.appendChild(hiddenField); 

    // if user uses iPad (logic done in PHP) 

    form.setAttribute('target', '_blank'); 

    form.setAttribute("action",'http://my-url.com'); 

    document.body.appendChild(form); 

    setTimeout(function(){ 

     form.submit(); 
     document.body.removeChild(form); 

    },250); 

同樣,這一切工作正常的第一次,第二次是正確創建的形式。它只是不提交。 (也許是這樣,但第二次就不會打開一個新窗口

而且,我試圖消除setTimeout(我們需要在代碼中),仍然出現同樣的問題。

我也嘗試到不同的ID添加到每個表單

form.id = 'form-' + new Date().getTime(); 

的ID被添加正常,但是,它並沒有解決問題。

我怎樣才能讓它工作做兩次?

編輯:

只是做了一個快速測試與改變form.name。無論用硬編碼的或動態的名字,都與窗口關閉,或仍處於打開狀態,它不提交第二次

EDIT2:

我使用iOS7的視網膜上的iPad使用iOS模擬器

+0

嘗試給目標一個名稱而不是_blank,因爲您可能想要回收現有的新選項卡而不是每次都打開新的選項卡。 –

+0

@Diodeus只是試過,但是,同樣的問題。由於該窗口已關閉,因此重新使用選項卡並不是什麼大事。 –

+0

這是用戶發起的提交嗎?瀏覽器通常會阻止腳本啓動的新操作。 –

回答

2

您正在以編程方式打開第二個選項卡或窗口爲相同的網址。這被視爲彈出窗口,因此被瀏覽器阻止。你可以每次使用不同的網址嗎?

+0

謝謝,解決了這個問題! –

相關問題