gpt4 book ai didi

c# Web 浏览器一直卡住,但常规 IE9 浏览器不会

转载 作者:行者123 更新时间:2023-12-02 21:52:05 24 4
gpt4 key购买 nike

我使用 Visual Studio C# 2010 作为 Web 浏览器。

WebBrowser 1 导航至此链接:

http://www.costco.com/IOGEAR-Wireless-1080p-HDMI-Transmitter-and-Receiver-3D-Compatible-2x-HDMI-Ports.product.100011675.html

当它到达页面时,它会加载并卡住。

我认为网页没有问题,因为 chrome、firefox 和常规 IE9 根本不会卡住。

只有我的 C# 程序中的 Web 浏览器在导航到此链接时才会卡住。

如何防止卡住?该网页似乎正在从另一个站点调用一些 html 数据。

我尝试将此代码添加到我的程序中

this.webBrowser1.ScriptErrorsSuppressed = true;

我还更改了 Web 浏览器的注册表值,以便它将使用 Internet Explorer 版本 9,但到目前为止这两个不起作用。

这是我正在使用的代码

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

webBrowser1.ScriptErrorsSuppressed = true;
}

private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.costco.com/IOGEAR-Wireless-1080p-HDMI-Transmitter-and-Receiver-3D-Compatible-2x-HDMI-Ports.product.100011675.html");
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{

}
}
}

最佳答案

问题不在于 WebBrowser 控件本身,而在于该特定网站如何尝试执行一些陷入循环的 Javascript。

比较和对比:

1) 将网址更改为http://google.com 。工作正常。

2)现在。为导航事件添加事件处理程序。像这样的东西:

this.webBrowser1.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(this.webBrowser1_Navigating);

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
Console.WriteLine("Navigating to: " + e.Url);
}

您将看到有一个 JavaScript 函数不断尝试重定向页面。以下是我的控制台输出中显示的内容(无限期地持续):

Navigating to: javascript:void((function(){document.open();document.domain='costco.com';document.write('<!DOCTYPE html>');document.close();})())
Navigating to: about:blank
Navigating to: javascript:void((function(){document.open();document.domain='costco.com';document.write('<!DOCTYPE html>');document.close();})())
Navigating to: about:blank
Navigating to: javascript:void((function(){document.open();document.domain='costco.com';document.write('<!DOCTYPE html>');document.close();})())
Navigating to: about:blank
Navigating to: javascript:void((function(){document.open();document.domain='costco.com';document.write('<!DOCTYPE html>');document.close();})())

这使得 webBrowser 控件基本上无法使用。

编辑:好的,尝试一种解决方法(这可能很糟糕,但令人沮丧的是奇怪的重定向循环只发生在 WebBrowser 控件的浏览器中)。

如果您在另一个导航事件完成之前阻止调用导航事件,则它会加载页面并且不会卡住,并且链接看起来可以工作。事情是这样的:

 private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
Console.WriteLine("Navigated to: " + e.Url);
isNavigating = false;
webBrowser1.AllowNavigation = true;
}

bool isNavigating = false;
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (isNavigating && e.Url.ToString().Contains("javascript:void((function(){document.open();document.domain='costco.com'"))
{
webBrowser1.Stop();
webBrowser1.AllowNavigation = false;
return;
}

isNavigating = true;
Console.WriteLine("Navigating to: " + e.Url);
}

关于c# Web 浏览器一直卡住,但常规 IE9 浏览器不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18395152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com