在c#中使用javascript不工作
问题描述:
我在我的wp7应用程序中使用javascript函数时遇到问题。我基本上试图创建一个Find on Page按钮,就像在Windows Phone的默认IE浏览器中看到的一样。到目前为止,我已经引用了一个来自http://www.liveside.net/2011/10/21/tip-how-to-get-forward-and-find-on-page-back-in-ie9-mobile-on-windows-phone-7-5/的查找页面选项的javascript函数,该函数将通过点击事件来访问。我的实现在下面显示了上面的链接中显示的查找页面搜索栏,但没有发生任何其他事情,只有搜索栏显示,无法使用。任何想法如何正确使用这个JavaScript函数通过我的点击事件?提前致谢!在c#中使用javascript不工作
的Javascript
javascript:(
function()
{
function G()
{
var pf=doc.getElementById('pf');
var qt=doc.getElementById('qt');
if(null==pf)
{
pf=doc.createElement('div');
pf.id='pf';
var s=pf.style;
s.position='absolute';
s.zIndex='99';
s.top=(scT||scBT)+'px';
s.left=(scL||scBL)+'px';
s.width='100%';
s.backgroundColor='#FFFF00';
pf.appendChild(doc.createTextNode('Search: '));
qt=doc.createElement('input');
qt.id='qt';
qt.type='text';
pf.appendChild(qt);
var sb=doc.createElement('input');
sb.type='button';
sb.value='Find';
sb.onclick=function()
{
P(qt.value)
};
pf.appendChild(sb);
doc.body.appendChild(pf);
}
else
{
pf.style.display='inline';
count=0;
}
}
function P(s)
{
document.getElementById('pf').style.display='none';
if(s==='')
return;
var n=srchNode(document.body,s.toUpperCase(),s.length);
alert("Found "+count+" occurrence"+(count==1?"":"s")+" of '"+s+"'.");
pf.parentNode.removeChild(pf);
return n;
}
function srchNode(node,te,len)
{
var pos,skip,spannode,middlebit,endbit,middleclone;
skip=0;
if(node.nodeType==3)
{
pos=node.data.toUpperCase().indexOf(te);
if(pos>=0)
{
spannode=document.createElement("SPAN");
spannode.style.backgroundColor="red";
middlebit=node.splitText(pos);
endbit=middlebit.splitText(len);
middleclone=middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode,middlebit);
++count;
skip=1;
}
}
else
{
if(node.nodeType==1&&node.childNodes&&node.tagName.toUpperCase()!="SCRIPT"&&node.tagName.toUpperCase!="STYLE")
{
for(var child=0;child<node.childNodes.length;++child)
{
child=child+srchNode(node.childNodes[child],te,len);
}
}
}
return skip;
}
var count=0,scL=0,scT=0,scBL=0,scBT=0;
var w=window,doc=document;
if(typeof doc.body!='undefined'&&typeof doc.body.scrollLeft!='undefined')
{
scBL=doc.body.scrollLeft;
scBT=doc.body.scrollTop;
}
if(typeof doc.documentElement!='undefined'&&typeof doc.documentElement.scrollLeft!='undefined')
{
scL=doc.documentElement.scrollLeft;
scT=doc.documentElement.scrollTop;
}
G();
})()
Click事件
public void FindOnPage()
{
var resource = Application.GetResourceStream(new Uri("Resources/FindOnPage.txt", UriKind.Relative));
string text;
StreamReader sr = new StreamReader(resource.Stream);
while((text = sr.ReadToEnd()) != null)
{
TheWebBrowser.InvokeScript("eval", text);
}
}
注意,JavaScript函数放置在文本文件中FindOnPage.txt。
答
javascript函数正常工作。将FindOnPage方法更改为以下内容
public void FindOnPage()
{
var resource = Application.GetResourceStream(new Uri("Resources/FindOnPage.txt", UriKind.Relative));
string text;
StreamReader sr = new StreamReader(resource.Stream);
//while((text = sr.ReadToEnd()) != null)
if ((text = sr.ReadToEnd()) != null)
{
TheWebBrowser.InvokeScript("eval", text);
}
}
显示您拥有的代码。 – 2012-03-27 04:24:49
@Robert Harvey我编辑了我的评论以显示我的代码。目前JavaScript功能正在通过点击事件进行访问,但只有页面搜索栏上的查找显示,但我无法使用它在原始文章链接中显示的内容。如何解决这个问题的任何想法,以便页面上的JavaScript查找功能正常工作? – Matthew 2012-04-05 05:37:40