1. 程式人生 > >ios webview alert彈窗不顯示網址解決辦法

ios webview alert彈窗不顯示網址解決辦法

最近做hybrid webapp,碰到一個問題,以前的版本,ios和android都可以通過重寫webview的alert等彈窗事件來隱藏掉彈窗的標題,但是ios7之後,api被禁用了,導致ios無法重寫來實現隱藏標題,後來想過幾種方案:


1. 通過js呼叫ios原生程式碼來實現,即:window.alert = function(str){window.local.href=”xx://str/”+str}


2. js+html+css 模擬,但是為了實現alert等的阻塞執行,需要把後面的程式碼放入回撥函式中執行


但是還是感覺這兩種方式實現不太優雅,都需要對現有程式碼做比較大的改動,不死心,於是繼續google,終於發現個好辦法:




               <script>
window.alert = function(name){
var iframe = document.createElement("IFRAME");
iframe.style.display="none";
iframe.setAttribute("src", 'data:text/plain,');
document.documentElement.appendChild(iframe);
window.frames[0].window.alert(name);
iframe.parentNode.removeChild(iframe);
}

alert('xxx');
</script>

這個方法在於重寫了alert方法(confirm方法同理),不需要改動現有程式碼,並且解決了彈窗標題出現網址的問題。不過需要注意的是,每次在框架中執行完一個alert/confirm後,需要將框架移除,下次再重新載入,否則在chrome中會引發跨域執行,從而被chrome攔截。