2015-02-05 153 views
2

我想使用WebWorkerStartedWebWorkerFinishedTWebbrowser但是事件根本不會被解僱。事件沒有被解僱

我怎樣才能得到這些事件的工作?我想看看這工作線程都可以從TWebbrowser啓動。

unit Unit2; 

interface 

uses 
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleCtrls, SHDocVw; 

type 
    TForm2 = class(TForm) 
    WebBrowser1: TWebBrowser; 
    Button1: TButton; 
    procedure Button1Click(Sender: TObject); 
    procedure WebBrowser1WebWorkerFinsihed(ASender: TObject; dwUniqueID: Cardinal); 
    procedure WebBrowser1WebWorkerStarted(ASender: TObject; dwUniqueID: Cardinal; const bstrWorkerLabel: WideString); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    Form2: TForm2; 

implementation 

{$R *.dfm} 

procedure TForm2.Button1Click(Sender: TObject); 
begin 
    WebBrowser1.Navigate('www.stackoverflow.com'); 
end; 

procedure TForm2.WebBrowser1WebWorkerFinsihed(ASender: TObject; dwUniqueID: Cardinal); 
begin 
    // does not fire 
end; 

procedure TForm2.WebBrowser1WebWorkerStarted(ASender: TObject; dwUniqueID: Cardinal; const bstrWorkerLabel: WideString); 
begin 
    // does not fire 
end; 

end. 
+1

你將它們分配給組件? – 2015-02-05 14:39:11

+1

您確定您導航的頁面實際上使用網絡工作者嗎?我覺得這是頁面腳本明確使用(或不)的印象。 – 2015-02-05 15:02:00

+1

@ 500 InternalServerError,我可能是錯的,但我覺得OP不理解這個事件意味着什麼,什麼是HTML WebWorker ... +1你。 – kobik 2015-02-05 15:44:35

回答

6

如記錄here

默認情況下,TWebBrowser使用即使運行時環境中安裝了最新的IE(例如,IE11)IE7標準模式。

Web工作人員是在IE10中引入的,因此您必須讓IE以更當前的模式運行。至少有兩個註冊表項需要進行設置(更多,如果同時支持32/64位):

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) 
    {\Wow6432Node} 
    \SOFTWARE 
    \Microsoft 
    \Internet Explorer 
    \Main 
    \FeatureControl 
    \FEATURE_BEHAVIORS 
    {NEW DWORD -> 'YourApplication.exe' 
    { VALUE -> 1 

而且(例如,IE11模式)

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) 
    {\Wow6432Node} 
    \SOFTWARE 
    \Microsoft 
    \Internet Explorer 
    \Main 
    \FeatureControl 
    \FEATURE_BROWSER_EMULATION 
    {NEW DWORD -> 'YourApplication.exe' 
    { VALUE -> 0x2AF8 

這將導致Internet Explorer實例包梁通過TWebBrowser在IE11模式下運行,支持WebWorkers,等等。你應該設置這個值之前可能做一些針對IE的安裝版本健全性檢查。有關有效條目的更多信息can be found on MSDN

這仍然導航到StackOverflow上時,不會引發任何WebWorker事件對我(你確定它使用它們?)。作爲驗證測試​​,這WebWorkers演示頁不養OnWebWorkerStarted事件:

WebBrowser1.Navigate('https://whatwg.org/demos/workers/primes/page.html');