⑴ 怎樣讓webbrowser執行js腳本正常顯示網頁
瀏覽器抄一般都對腳本具有容錯襲性的,一些小差錯會自動忽略或智能修正,而WebBrowser控制項的容錯性較差,稍有差錯就會提示,所以並不是說WebBrowser不支持JS腳本,而是它對腳本的准確性要求較高。
補充說一下:正是由於瀏覽器的容錯性,使得一些腳本編寫者認為只要是瀏覽器中能運行的腳本就是正確的,使得一些錯誤被習慣性地不斷重復,因此現在好多網頁上的腳本代碼其實都是含有錯誤的,尤其是一些公開的代碼,復製得越多就越有錯。
⑵ 如何用delphi在twebbrowser中調用javascript
設置項目的屬性「Make assembly COM-Visible」為選中狀態。編譯之後得到 TestClass.dll,把此dll放到Delphi主程序目錄下。
打開vs2005自帶的工具「內Visual Studio 2005命令提示」容,輸入
Regasm 路徑/TestClass.dll 向系統注冊此dll。
⑶ 如何在WebBrowser控制項中注入Javascript腳本
在WebBrowser中注入並執行javascript代碼
更多 0
c#WebBrowserWinForm
WebBrowser控制項用來顯示網頁內容,有時候我們需要在網頁中執行一段自定義的javascript代碼。
如下是實現和注釋:
//找到head元素
HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
//創建script標簽
HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
//給script標簽加js內容
element.text = "function sayHello() { alert('hello') }";
//將script標簽添加到head標簽中
head.AppendChild(scriptEl);
//執行js代碼
webBrowser1.Document.InvokeScript("sayHello");
⑷ 如何用Delphi在TWebBrowser中調用JavaScript
XE6的TWebBrowser新增了EvaluateJavaScript方法,這個方法,允許我們與TWebBrowser已經載入的的網頁進行交互。這太方便了!作者用一個具體的實例,演示如何調用Google map的API。
首先,建立一個網頁:
const
{ Was used sample from }
{ https://developers.google.com/maps/documentation/javascript/examples/directions-panel }
cRoute =
''
+ ''
+ ' '
+ ' '
+ ' '
+ ' setPanel()'
+ ' '
+ ' '
+ '
+ '
+ ' '
+ ' '
+ '
'
+ ' Start:'
+ ' '
+ ' End:'
+ ' '
+ '
'
+ ' '
+ ' '
+ ' '
+ '';
然後,用一個TWebBrowser調入:
WebBrowser1.LoadFromStrings(cRoute, '');
再聲明兩個常量:
cChicagoWinona =
'document.getElementByIdx_x(''start'').value = "chicago, il";'
+ 'document.getElementByIdx_x(''end'').value = "winona, az";'
+ 'calcRoute();';
cStLouisGallupNM =
'document.getElementByIdx_x(''start'').value = "st louis, mo";'
+ 'document.getElementByIdx_x(''end'').value = "gallup, nm";'
+ 'calcRoute();';
用兩個按鈕調用:
procere TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.EvaluateJavaScript(cChicagoWinona);
end;
procere TForm1.Button2Click(Sender: TObject);
begin
WebBrowser1.EvaluateJavaScript(cStLouisGallupNM);
end;
⑸ 請教:如何在Delphi 的 Webbrowser 里 調用或執行 JS 帶參 函數或過程
在 delphi 里,使用 WebBrowser 執行 js 代碼,參閱以下示例:
procereTForm1.btn1Click(Sender:TObject);
var
doc:olevariant;
str:string;
begin
doc:=wb1.Document;
//執行js
wb1.OleObject.document.parentWindow.execScript('zbxxcx("50E13DA0-728B-455E-89EC-18B71477C47E")','JavaScript');
end;
⑹ Qt使用WebBrowser並調用網頁中的JS函數怎麼實現
在界面上拖入QAxWidget,注意這里不建議直接在UI設計界面指定控制項,否則可能引起QtCreator崩潰
建議在代碼中動態設置,如:
[cpp] view plain
ui->axWidget->setControl("Shell.Explorer");
ui->axWidget->dynamicCall("Navigate(QString)", "C:/1.html");
當然,上面的"C:/1.html"是我測試的頁面
這里的辦法是通過IHTMLWindow2介面的execScript方法執行JavaScript函數。可惜的是這個方法不支持函數返回值
[cpp] view plain
#include <MsHTML.h>
{
QAxObject *document = ui->axWidget->querySubObject("Document");
IHTMLDocument2 *doc2;
document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2);
if (doc2)
{
IHTMLWindow2 *win2 = nullptr;
if (doc2->get_parentWindow(&win2) == S_OK)
{
BSTR s1 = SysAllocString(L"Test()");
BSTR s2 = SysAllocString(L"JavaScript");
VARIANT ret;
win2->execScript(s1, s2, &ret);
SysFreeString(s2);
SysFreeString(s1);
}
}
}
JavaScript函數如下
[html] view plain
<script language="javascript" type="text/javascript">
function Test()
{
alert("你調用了全局函數Test");
}
</script>
⑺ C# webbrowser 里如何調用網頁里的js函數
webBrowser1.Navigate("javascript:alert('hello');");
說明來
webBrowser1.Navigate("javascript:[你要執行的javascript語句源];");
如果你要執行那個函數代碼如下:
webBrowser1.Navigate("javascript:test.work('1','0','5');");
⑻ webbrowser 裡面的js怎麼調用C#
通過webBrowser實現C#和javascript互調
實現步驟:
一、新建一個窗體,加入webBrowser控制項
控制項名:webBrowser1
二、在窗體後台代碼加入如下定義
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
...
}
三、載入網頁
webBrowser1.Navigate(Application.StartupPath + "/UpDateReport.htm");
webBrowser1.ObjectForScripting = this; //這句必須,不然js不能調用C#
四、調用腳本方法
/// <summary>
/// 腳本方法
/// </summary>
/// <param name="tag">JS函數名|參數1|參數2</param>
/// <returns></returns>
private object EXEC_JS(System.Windows.Forms.WebBrowser webBrowser, string tag)
{
string[] args = tag.Split('|');
if (args.Length == 1)
{
return webBrowser.Document.InvokeScript(args[0], null);
}
else
{
object[] objects = new object[args.Length - 1];
Array.Copy(args, 1, objects, 0, objects.Length);
return webBrowser.Document.InvokeScript(args[0], objects);
}
}
五、C#調用腳本方法例子,可以有返回值
//JS方法
<script language="javascript">
function js_fun(args)
{
alert("我是通過js腳本彈出的。你輸入的內容是:"+args);
return "JAVASCRIPT";
}
</script>
//C#代碼
object returnvalue = EXEC_JS(webBrowser1, "js_fun|參數字元串");
MessageBox.Show("js方法返回值是:" + returnvalue.ToString());
六、JS調用C#方法的例子
//C#方法
public string Test(string args)
{
return "你輸入的是:"+args;
}
//JS代碼
<script language="javascript">
window.onload = function()
{
var CS_returnvalue= window.external.Test("aaa");
alert(CS_returnvalue);
}
</script>