2013-02-03 21 views
7

Due miei amici hanno testato un progetto ho lavorato su cui si basa sull'utilizzo del controllo WebBrowser, e sono riusciti a venire attraverso uno scenario costante in cui il controllo WebBrowser non è in grado per eseguire qualsiasi JavaScript nella pagina Web contenuta.JavaScript non eseguire il controllo WebBrowser NET

Per motivi di restringendo il campo ho creato un nuovo progetto Windows Form che contiene solo un controllo WebBrowser, e cerca di accedere alla pagina seguente: http://javatester.org/javascript.html

Il risultato sui miei amici del computer è stata la seguente (click per ingrandire):

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

Come si può vedere, non rende nulla quando si cerca di chiamare il codice specifico JS, in alternativa, se si visualizza in un browser web con JS disabilitato o abilitato, si' Vedremo qualcosa.

Ha esportato le sue chiavi di registro che contengono l'impostazione per JavaScript abilitato (vedere https://gist.github.com/4699943) e il valore per 1400 in ciascuna chiave corrisponde alle stesse impostazioni che uso e quando eseguo il programma non ho alcun problema.

Il codice per l'intero progetto di test è la seguente:

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"); 
     } 
    } 
} 

Se un nuovo progetto viene creato utilizzando questo codice che gli obiettivi del quadro 4.5 (sia sulla mia macchina o il suo) che funziona, se uno viene creato utilizzando 4.0 o inferiore si verifica il risultato sopra. Non sono sicuro se questa è una coincidenza o se è effettivamente qualcosa a che fare con il problema/soluzione.

Si noti che se si naviga in questa pagina in Internet Explorer non ci sono problemi, rileva che JavaScript è abilitato, questo problema risiede esclusivamente in questa applicazione di test e nel progetto principale di cui fa parte.

Qualsiasi aiuto sarebbe apprezzato, ho trascorso ben due mesi cercando di capire questo e ancora non posso.

+1

non credo che la versione quadro dovrebbe essere un problema. Ho fatto progetti in 3.5 su cui JavaScript funziona bene. So che a causa di altri problemi che ho avuto con il controllo standard di 'WebBrowser' ho spostato molti dei miei progetti per utilizzare WebKit.net (WebKit è il motore di layout di Chrome e Safari). È un ottimo strumento e hanno davvero cercato di renderlo simile al controllo standard. Se fossi in te, almeno darei un'occhiata. [WebKit.net] (http://webkitdotnet.sourceforge.net) –

+0

@LeonNewswanger - Questo è un po 'fuori tema, ma: ho già guardato al passaggio a WebKit, tuttavia alcuni dei futuri requisiti del progetto sono che abbiamo posso richiamare l'assembly da JavaScript usando la proprietà ObjectForScripting, e non sono mai stato in grado di trovare una cosa simile in WebKit; hai mai trovato questo in WebKit? – rastating

+0

Onestamente non ho mai guardato, mi dispiace. Mi rendo conto che non è davvero una risposta alla tua domanda. Ecco perché l'ho postato come un commento, e poiché non ero a conoscenza dei tuoi altri requisiti, ho pensato che potrebbe essere qualcosa che potrebbe aiutarti a risolvere il tuo problema. –

risposta

0

Dal mio test del browser web con .NET 4 rapporti una stringa agente browser web di IE 7.0. Pertanto, controlla che JavaScript funzioni correttamente in IE7.

-1

Gli script non vengono caricati se si utilizza la proprietà browser web control.Document Text. Va perfettamente bene con il metodo Navigate. Ho bisogno che la proprietà text del documento funzioni mentre ottengo html da terze parti. Lo stesso contenuto HTML funziona perfettamente anche se creo un file html e lo apro nel normale browser IE. Il controllo webbrowser è bacato.

+1

Potresti elaborare questa risposta o fornire ulteriori spiegazioni o documentazione? – ryanyuyu

Problemi correlati