2015-05-30 37 views
2

飛鏢不顯示的警告對話框中,當我使用網頁視圖,並顯示該錯誤:警報對話框被封鎖

: An alert dialog was blocked. (extensions::webViewEvents:225)

: A confirm dialog was blocked. (extensions::webViewEvents:225)

有誰知道如何繞開的問題或如何捕獲錯誤?

謝謝。

對不起,我的英語不好。

編輯

使用的代碼:

Element webview= querySelector("#webview"); 
Map<String,String> map=new Map(); 
map["src"]=urlWebView; 
webview.attributes.addAll(map); 
webview.style.visibility="visible"; 

DartEditor version= STABLE build 45396

The version number of the SDK= 1.10.0

web視圖會加載一個JS不是由我創作的作品的頁面。

錯誤使用此發生時:

alert("***") 
+0

您可以添加一些演示您實際嘗試完成並允許重現該問題。您使用的是什麼Dart版本。你在哪個平臺上運行你的應用程序。我假設你正在運行'dart2js'或'pub build'的輸出。您使用哪些選項來構建JS輸出? –

+0

另外,請不要添加標題中的標籤。這就是_tags_的目的。 – Xan

回答

4

網頁視圖無法顯示這些默認。

你需要趕上dialog event,顯示自己的UI吧(記住,應用can't use alert and friends,所以<dialog>是一個不錯的選擇),然後傳回響應與DialogController

+0

對不起,但我試圖使用此代碼來捕獲錯誤,但不起作用: webview.addEventListener("confirm", (Event e){ e.preventDefault(); print("test"); }); 任何想法? – MalumaDev

+1

@maluma事件我們總是'dialog',對話框的類型是一個參數。沒有'確認'事件。 – Xan

+0

謝謝。我完成後立即添加解決方案的代碼。 – MalumaDev

3

更澄清@Xan答案:

你需要傾聽來自web視圖的對話框時,請閱讀代碼中的註釋,以更好地理解,再次,我使用nwjs,這樣你就可以在你的語言實現類似的版本:

//lets listen to alert dom and enable it 
    webview.addEventListener('dialog',function(e){ 

    //message type 
    messageType = e.messageType; 

    messageText = e.messageText; 

    DialogController = e.dialog; 


    //lets checki if alert 
    if(messageType == 'alert'){ 
    window.alert(messageText); 
    }//emd if 

    //if confirm 
    else if(messageType == 'confirm'){ 

    //confirm 
    var confirm = window.confirm(messageText); 

    //get confirm bool and send to controller 
    if(confirm == true){ 

     //if true send okay to browser 
     DialogController.ok(); 
    }else{ 

     //send cancel with to send false false 
     DialogController.cancel(); 
    }//end if 

    }//end if confirm 

    //lastly if its prompt 
    else if(messageType == 'prompt'){ 

    //get user Input 
    promptInput = window.prompt(messageText); 

    //if null , then means the user clicked cancel 
    if(promptInput == null){ 

      //tell browser to cancel 
      DialogController.cancel(); 
    }else{ 
     //feed browser with input data 
     DialogController.ok(promptInput); 
    } 
    }//end if prompt 

});//end dialog test 
+0

備註:'window.alert'和朋友會在Chrome應用中失敗,而不是nw.js – Xan