2013-02-03 35 views
7

Hai người bạn của tôi đã thử nghiệm một dự án mà tôi đang làm dựa trên việc sử dụng điều khiển WebBrowser, và đã quản lý một kịch bản không đổi trong đó điều khiển WebBrowser không thể để thực thi bất kỳ JavaScript nào trên trang web có chứa.JavaScript không thực thi trong điều khiển .NET WebBrowser

Vì lợi ích của việc thu hẹp nó xuống tôi đã tạo một dự án Windows Forms mới chỉ chứa một điều khiển WebBrowser, và cố gắng để di chuyển đến các trang sau đây: http://javatester.org/javascript.html

Kết quả trên bạn bè của tôi máy tính là dưới đây (nhấp chuột để phóng to):

http://s18.postimage.org/ax5qmw2th/screenshot.jpg

Như bạn thấy, nó không làm bất cứ điều gì khi cố gắng gọi mã cụ thể JS, cách khác nếu bạn xem nó trong một trình duyệt web với JS tàn tật hoặc được bật, bạn' sẽ thấy một cái gì đó.

Ông đã xuất các khóa đăng ký chứa cài đặt JavaScript được bật (xem https://gist.github.com/4699943) và giá trị cho 1400 trong mỗi khóa khớp với cùng cài đặt tôi sử dụng và khi tôi chạy chương trình tôi không có vấn đề gì.

Mã cho toàn bộ dự án thử nghiệm là như sau:

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

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

     private void Form1_Shown(object sender, EventArgs e) 
     { 
      this.webBrowser1.Navigate("http://javatester.org/javascript.html"); 
     } 
    } 
} 

Nếu một dự án mới được tạo ra sử dụng mã này nhắm khuôn khổ 4.5 (hoặc trên máy tính của tôi hay của anh ấy) nó hoạt động, tuy nhiên nếu một được tạo bằng cách sử dụng 4.0 hoặc thấp hơn kết quả trên xảy ra. Tôi không chắc chắn nếu đây là một sự trùng hợp ngẫu nhiên hoặc nếu nó thực sự là một cái gì đó để làm với vấn đề/giải pháp. Cần lưu ý rằng nếu anh điều hướng đến trang này trong Internet Explorer thì không có vấn đề gì, nó phát hiện rằng JavaScript được kích hoạt, vấn đề này chỉ nằm trong ứng dụng thử nghiệm này và dự án chính mà nó là một phần của nó.

Bất kỳ trợ giúp nào sẽ được đánh giá cao, tôi đã dành hai tháng để cố gắng tìm ra điều này và vẫn không thể.

+1

Tôi không tin rằng phiên bản khung phải là một vấn đề. Tôi đã thực hiện các dự án trong 3.5 mà JavaScript hoạt động tốt. Tôi biết rằng bởi vì các vấn đề khác tôi đã có với tiêu chuẩn 'WebBrowser' kiểm soát tôi đã di chuyển rất nhiều dự án của tôi để sử dụng WebKit.net (WebKit là công cụ bố trí của Chrome và Safari). Đó là một công cụ tuyệt vời và họ đã thực sự cố gắng làm cho nó tương tự như kiểm soát tiêu chuẩn. Nếu tôi là bạn tôi ít nhất là kiểm tra xem nó ra. [WebKit.net] (http://webkitdotnet.sourceforge.net) –

+0

@LeonNewswanger - Đây là chủ đề hơi tắt, nhưng: trước đây tôi đã xem xét để chuyển sang WebKit, tuy nhiên một số yêu cầu trong tương lai của dự án là chúng tôi có thể gọi lại assembly từ JavaScript bằng cách sử dụng thuộc tính ObjectForScripting, và tôi chưa bao giờ có thể tìm thấy một thứ như vậy trong WebKit; bạn đã bao giờ gặp điều này trong WebKit chưa? – rastating

+0

Tôi thực sự không bao giờ nhìn, xin lỗi. Tôi nhận ra nó không thực sự là câu trả lời cho bạn. Đó là lý do tại sao tôi đăng nó như một bình luận, và như tôi đã không biết các yêu cầu khác của bạn, tôi nghĩ rằng nó có thể là một cái gì đó có thể giúp bạn giải quyết vấn đề của bạn. –

Trả lời

0

Từ các thử nghiệm của tôi WebBrowser với .NET 4 báo cáo chuỗi tác nhân trình duyệt web của IE 7.0. Do đó, hãy kiểm tra JavaScript của bạn hoạt động chính xác trong IE7 trước.

-1

Các tập lệnh không tải nếu bạn đang sử dụng điều khiển webbrowser.Document Text property. Nó hoàn toàn tốt với phương pháp điều hướng. Tôi cần tài sản văn bản tài liệu để làm việc như tôi nhận được html từ bên thứ ba. Cùng một nội dung html hoạt động hoàn toàn tốt nếu tôi tạo một tập tin html ra khỏi nó và mở nó trong trình duyệt IE thông thường. Điều khiển webbrowser là lỗi.

+1

Bạn có thể giải thích thêm về câu trả lời này hoặc cung cấp thêm giải thích hoặc tài liệu không? – ryanyuyu

Các vấn đề liên quan