【问题标题】:WebBrowser control does not complete loading when javascript:void(0) called调用 javascript:void(0) 时 WebBrowser 控件未完成加载
【发布时间】:2012-04-30 21:06:52
【问题描述】:

我有一个使用WebBrowser 控件的C# 应用程序。

在一个页面上,用户可以单击一个按钮来处理一些信息并导航到一个新页面。问题是当用户单击此按钮时,WebBrowser 似乎停止了。

我在我的代码中处理了NavigatingNavigatedDocumentCompleted 事件,我看到了Navigating 事件,但没有别的。

这是被点击按钮的 HTML:

<div class="right button-wrapper">
    <div class="clearfix right">
        <span id="nextbutton" 
              class="button-link button-link btn-reg btn-blue-reg">
            <span class="hasHover"><a id="btnPay" 
                href="javascript:void(0);" class="buttons">Next:Pay and Print</a>
            </span>
         </span>
    </div>
</div>

可以毫无问题地点击其他页面上的按钮。

我假设它与 HTML 的 href="javascript:void(0);" 部分有关,但不知道为什么。在 IE 或 Firefox 等浏览器中,单击此按钮时会出现进度条之类的内容,并显示“处理中”几秒钟,然后加载下一页。

编辑:我应该提到导航处理程序触发两次,然后页面冻结。

【问题讨论】:

  • javascript:void(0) 告诉您的浏览器在单击链接时绝对不执行任何操作。可能应该有一些 JavaScript 将事件监听器添加到该链接。那个 JavaScript 是什么样子的?
  • @atornblad,感谢您的回复。我不拥有该网页,所以我不知道我可以获取 JavaScript(除非它嵌入在文档中?)。我可以查看页面的来源,如果有帮助,我可以提供。
  • 您是否尝试过Debuging JavaScript in a WebBrowser,看看您是否可以看到 JavaScript 端发生了什么(如果有的话)?
  • @atornblad,我相信这是 JavaScript 停止加载的部分: if(this.validate() === true){ self.modal.openOverlay(); self.modal.openOverlayProgress(); ce.checkoutForm.submit();这是在进行了一些验证之后。谢谢。

标签: c# javascript .net winforms webbrowser-control


【解决方案1】:

这显然是由 IE7+ 的“Script URL Mitigation”功能引起的,可以通过禁用 FEATURE_SCRIPTURL_MITIGATION 为您的应用程序修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-31
    • 2013-09-14
    • 2014-03-09
    • 1970-01-01
    • 2011-10-11
    • 2012-05-14
    • 1970-01-01
    • 2013-04-21
    相关资源
    最近更新 更多