我們有一個包含ActiveX WebBrowser控件的Windows應用程序。作爲此應用程序的常規操作的一部分,將對ActiveX WebBrowser控件顯示的頁面進行修改。部分修改涉及在正在加載到ActiveX WebBrowser的網頁中設置JavaScript變量。試圖在C#中的ActiveX WebBrowser中設置/獲取JavaScript變量#
我們需要在C#中初始化這個變量(最初,VB6代碼正在初始化該值)。此變量的值是一個COM可見的類對象。
但是,爲了簡單起見,我們將問題簡化爲設置字符串值。我們原來的頁面幀涉及之類,但同樣的問題發生在頁面這樣的:
<HTML>
<HEAD>
<TITLE>Test</TITLE>
<SCRIPT type="text/javascript">
var field = 'hello world';
</SCRIPT>
</HEAD>
<BODY>
<input type="button" value="See field" onclick="javascript:alert(field);"/>
</BODY>
</HTML>
我們要訪問的場變量和值分配給它。在VB6此代碼是非常簡單的:
doc.Script.field = 'newValue'
然而,在C#中我們不得不訴諸其他伎倆,就像這樣:
Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateSet(Script, null, "field",new object[] { "newValue"},null, null);
頁的一點是要測試是否我們的變量是由C#正確分配的。點擊按鈕應該產生任何由C#注入的新值。例如,點擊頁面中的按鈕,我們會看到一個提示:「newValue」。
這是第一次,但它不起作用,如果我們重新加載頁面。在隨後的調用中,我們無法設置變量field
的值。
以前有沒有人有過這種類型的操作經驗?