Android WebView:设置 iframe src 会重定向页面

Android WebView: Setting iframe src redirects the page

本文关键字:重定向 src iframe WebView 设置 Android      更新时间:2023-09-26

我正在我的jquery u界面中播放一个YouTube嵌入的视频,其中包含iframe。在dialogClose事件上,我清除了iframe src,但它将页面重定向/回发到该URL。这是我的代码:

.HTML:

<div id="videoDialog" title="Video Player">
    <iframe id="videoPlayer" src="" width="100%" height="500" style="border: 0px;" sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>
</div>

.JS:

var $videoDialog = $("#videoDialog").dialog({
        autoOpen: false,                    
        width: 900,
        height: "auto", 
        modal: true
    }),
    $iframeVideoPlayer = $("#videoPlayer");        

$(".video").on("click", function(){   
    $iframeVideoPlayer.prop("src", $(this).data("src"));
    $videoDialog.dialog("open");
  });
  $videoDialog.on("dialogclose", function(event) {           
     $iframeVideoPlayer.prop("src", "");//i set empty src here to iframe and it redirects the page     
  });

请帮忙。

它只发生在安卓网络视图中。在桌面浏览器中,它工作正常

您是否尝试过使用 beforeClose 事件?

我刚刚在对话框关闭事件时从 DOM 中删除了对话框,并在 DOM 中动态插入对话框以停止在设置 iframe src 时重定向页面:

这是我的代码:

var $videoDialog = $("#videoDialog").dialog({
        autoOpen: false,                    
        width: 900,
        height: "auto", 
        modal: true,
        close: function() {
            $videoDialog.remove();
        }
    }),
    $iframeVideoPlayer = $("#videoPlayer");     
    $(".video").on("click", function(){
       var videoSrc = $(this).data("src"); 
       $videoDialog = $("#videoDialog");  
       if($videoDialog.length == 0){
          //here appending dialog in body and .dialog it   
          $("body").append("<div id='videoDialog' title='Video Player'><iframe id='videoPlayer' src='"+videoSrc+"' width='100%' height='500' style='border: 0px;'></iframe></div>");
          $videoDialog = $("#videoDialog").dialog({
              autoOpen: false,                    
              width: 900,
              height: "auto", 
              modal: true,
              close: function() {               
                $videoDialog.remove();
              }
         });
        $iframeVideoPlayer = $("#videoPlayer");
     }
     $iframeVideoPlayer.prop("src", videoSrc);      
     $videoDialog.dialog("open");
 });