silverlight代码里调用WebBrowser中HTML页面包含的JavaScript的问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了silverlight代码里调用WebBrowser中HTML页面包含的JavaScript的问题。相关的知识,希望对你有一定的参考价值。

一般在SL的OOB模式下,都说直接用函数InvokeScript("scriptname")就可以了,但是我调用这个函数发现JS没有被执行呀。静态页面下这个JS是可以正常执行的。又有解释说这个html页面和Silverlight项目必须是在同一个域中。但是我的HTML页面和SL的网站都说部署在同一个IIS里的(当然它们是不同网站目录下的),这还不能算是同一个域下吗?无语呀,求解答.......
下面的写得有点匆忙,具体我的脚本是这样的:
<script language="javascript" type="text/javascript">

function writeCell(tableIndex, rowIndex, columnIndex, value)
var tab = document.getElementsByTagName("table").item(tableIndex);
var cell = tab.rows[rowIndex].cells[columnIndex]
cell.innerHTML = value;

</script>
代码里如下:
string[] param = new string[4];
param[0] = "0";
param[1]="1";
param[2]="1";
param[3]="value";
使用WebBrowser1.InvokeScript("writeCell",param);调用这个脚本
调试错误是找不到cells这个属性,改用childNodes,也说找不到这个属性。是不是Silverlight的WebBrowser包含的HTML页面里的脚本还有什么限制,那我该怎么改变表格的内容?

δCat 正解
只要能定位到这个超链接就好办了
InvokeMember函数可以模拟办到想办的事件
参考技术A 问题补充:怎么没效果呢? δCat 正解只要能定位到这个超链接就好办了 InvokeMember函数可以模拟办到想办的事件 private void webBrowser1_Document追问

我的JS主要是为了更改表格单元格的内容,源码是这样的:
function writeCell(tableIndex , rowIndex , columnIndex,value)

var tab = document.GetElementByTag("table").item(tableIndex);
var cell = tab.rows[rowindex].cells[clumnIndex];
cell.innerHTML = value;

我在body标签的onLoad()事件里调用没问题,可以正常执行,但是在Silverlight里通过InvokeScript("writeCell",参数)调用就不行了。

以上是关于silverlight代码里调用WebBrowser中HTML页面包含的JavaScript的问题。的主要内容,如果未能解决你的问题,请参考以下文章

从Silverlight调用Javascript函数

保存网页为图片——滚动截取IE(WebBrowse)

从Silverlight 4调用Communicator.UIAutomation

在c#silverlight中调用c++ clr dll

Silverlight OpenRIA - 重复的请求

C# 获取网页源码