⑴ 怎样让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>