因此,我通過單擊按鈕以編程方式在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模擬器
嘗試給目標一個名稱而不是_blank,因爲您可能想要回收現有的新選項卡而不是每次都打開新的選項卡。 –
@Diodeus只是試過,但是,同樣的問題。由於該窗口已關閉,因此重新使用選項卡並不是什麼大事。 –
這是用戶發起的提交嗎?瀏覽器通常會阻止腳本啓動的新操作。 –