Skocz do zawartości

[C#] Webbrowser javascirpt


Rekomendowane odpowiedzi

Mam problem z komtrolką webbrowser WPF(Visual Studio 2010) mianowicie przy próbie otwarcia niektorych stron uzyskuję błąd skryptu i strona się nie wczytuje... Java i IE aktualne, co więcej w IE i w IE(bez dodatków) ta sama strona działa. Znalazłem coś takiego, ale nie rozumiem jak to zrobić w praktyce:

https://social.msdn.microsoft.com/Forums/en...ntrol?forum=vsx

 

Podpowie ktoś coś?

Odnośnik do komentarza
Udostępnij na innych stronach

Błąd JSu, ale to z tego co czytam domena webbrowsera, a nie odosobniony przypadek. Tylko jak to naprawić? Próbowałem z googla sposobu ze zmianą w rejestrze emulacji wersji IE w webbrowserze, ale nic nie dało. Jest jeszcze ten sposób z linku, tylko nie wiem jak to w praktyce zrobić :/

Odnośnik do komentarza
Udostępnij na innych stronach

ja od jakiegoś czasu używam pakietu firefoxowego silnika przeglądarkowego do .NETowych apek, miast wbudowanego IE.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie udało mi się ogarnąć jak zainstalować poprawnie to CefSharp, udało mi się natomiast zainstalować GeckoFX. Wyświetla poprawnie storny, ale nie ma wielu funkcji które ma webBrowser a są mi potrzebne. Nie wie ktoś może jak to zrobić na podstawowym webBrowserze?

Odnośnik do komentarza
Udostępnij na innych stronach

Może zacznijmy od tego jakie funkcje są Ci potrzebne? Czego oczekujesz od przeglądarki? Konkretny przykład wykorzystania?

Siedzę nad kodem i powoli przystosowuje do GeckoFXa, jak skompiluje się okażę co z tego wyszło.

Wszystko powoli obchodzę, najwyżej używam Navigate i Javascriptu, żeby nadrobić braki, tylko jest jeszcze jeden poważny problem którego nie wiem jak obejść. W kontrole IE było allownavigate które uniemożliwiało użytkownikowi wejście w cokolwiek gdy było na true, ale z kodu dało się uruchamiać wciąż wszystko. W Gecko nie ma czegoś takiego i myślałem żeby jakoś stopować od razu naviagate tylko że wtedy javascripty by też nie działały.

Jakoś zablokować event klawiszy myszki i tabindex, czy jakby to obejść?

A konkrety co do działania będę miał jak już uporam się z przerabianiem kodu, a jest go sporo(ale w zasadzie już kończę) i go skopiuje. Wtedy zobaczę w praktyce na ile wszystko działa tak jak miało w założeniach.

 

@e: okazuję się że geckoFX też ma swoje mankamenty... Próbuję, ale jakby ktoś wiedział jak zrobić to z WebBrowserem to byłbym dłużny

@e2: ja powoli wysiadam, z tym gecko jeszcze więcej chyba problemów... Kurczę, wiem że to z webbrowserem jest znanym problemem i jakoś go rozwiązują np ten link co dałem, tylko mam chyba za mała wiedzę żeby załapać dokładnie jak to zrobić :/

@e3: Ma ktos jakiś gotowy skrypt konwersjacji InnerHtml > InnerText? Bo Gecko niestety tego nie obsługuje i chyba sam będę musiał napisać tę funckję jak nie znajdę gotówca a mam już dość pisania wszyskiego samemu bo GeckoFX nie ma połowy funkcji WebBrowsera :/

 

@e4: tyle godzin zmian znalazłem chyba nawet rozwiązanie dla innertext, ale... okazuje się że gecko jeszcze gorzej radzi sobie z tym javascriptem...

Generalnie tak - Firefox, IE normalnie otwiera stronę wraz z javascriptem na tej stronie, ale ani webbrowser, ani GeckoFX nie radzi sobie. Co ciekawe(jestem świadom, że GeckoFX nie jest już rozwijany, ale wydaje mi się że powinien takie rzeczy jeszcze ogarniać) Gecko radzi sobie dużo gorzej niż webBrowser :/

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli masz ochote pobawić się CefSharpem...

 

MainWindow.cs

      public MainWindow()
      {
           InitializeComponent();
           Cef.Initialize(new CefSettings());
           ChromiumWebBrowser browser = new ChromiumWebBrowser();
           browser.Width = this.stckPanel.Width;
           browser.Height = this.stckPanel.Height;
           browser.Address = "http://google.pl";
           browser.IsEnabled = false;
           this.stckPanel.Children.Add(browser);
       }

 

W MainWindow.xaml dodajesz jakiś kontener, np. StackPanel i dla tego przykładu dajesz mu atrybut Name="stckPanel", ogólnie rzecz biorąc jak już dodałeś nugetem paczke z CefSharpem to wystarczy dodać konfiguracje x86, nie dasz rady go kompilować w konfiguracji Any CPU.

W tym celu, klikasz na ComboBox obok przycisku Start i uruchamiasz menadżera konfiguracji, edytujesz Debug i Release dodając nową platforme x86, zostawiasz kopiowanie ustawień z Any CPU i już nie powinno być problemu.

 

11s1csi.jpg

 

Jeśli chodzi o allownavigate, nie wiem czy dobrze zrozumiałem, chcesz zablokować możliwość klikania w linki etc. ale JS ma nadal działać?

W takim razie, może chodzi Ci o coś w stylu IsEnabled? Z poziomu kodu nadal mógłbyś robić wszystko.

Jeżeli chodzi Ci o to, żeby użytkownik nie mógł przejść do innej strony przy pomocy linku, to zakładam że da się kontrolować wartość adresu

Odnośnik do komentarza
Udostępnij na innych stronach

A mógłbyś mi opisać dokładniej co mam zrobić jak już zainstaluje NuGeta?

Nigdy nie używałem NuGeta i do końca nie wiem co do czego i trochę działam na oślep.

Ściągałem i teraz korzystając z tego poradnika próbowałem go jakoś ogarnąć, ale nie wiem jak wykonać drugi punkt. Nie mam pojęcia jak dodać referencje do pliku XML i gdzie ten plik packageSources znaleźć. Mógłbyś mi to jakoś objaśnić krok po kroku jak mam zrobić żeby ten CefSharp działał?

 

@e: generalnie testuje w tym czasie czy jakoś nie "naprawie" kontrolki IE. Próbowałem w IE(systemowym nie kontrolce) pozmieniać opcje activex, ale nie wiele to dało. Generalnie otrzymuję błąd java że nie obsługuje metody trim i strona się nie wczytuję. W IE normalnym problem nie występuje. Jakieś pomysły?

 

@e2: jest. Okazało się że daje radę z rejestrem tylko że musiałem w current a nie local, chociaż pisało że i tu i tu może być.

Dla potomnych zmieniamy w rejestrze:

HKEY_CURRENT_USER > Software > Internet Explorer > Main > FeatureControl > Dodajemy DWORD jako nazwę klucza dajemy nazwę aplikacji a jako wartość w postaci dziesiętnej "11000"(czyli kompatybilność ustalamy na 11.0).

Odnośnik do komentarza
Udostępnij na innych stronach

Zakładam że korzystasz z VS, a jeśli tak to wchodzisz w menu Tools>Nuget Package Manager...>Console

Na dole powinien pojawić się panel, wklejasz do niego polecenie Install-Package CefSharp.Wpf

Czekasz aż zakończy, dalej robisz tak jak napisałem powyżej.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...