繁体   English   中英

在Windows Phone 8应用程序中动态注入javascript

[英]Dynamically injecting javascript in windows phone 8 application

我只是想在我的网络浏览器的内容中添加一些动态javascript。 我的方案是,我想显示一个广告,该广告映射到将由用户从电话屏幕输入的zoneID。 更确切地说,我只想添加以下javascript

    <script src="http://rq.vserv.mobi/delivery/js.php?zoneid=d03e63db&amp;vr=S-JS-1.0.0"></script>&nbsp;</div>

其中zoneid将根据用户输入动态变化。

我搜索了很多,因为我之前从未使用过JS,我得到了这篇文章 -

http://matthiasshapiro.com/2012/11/26/windows-phone-html-5-app-basics/

我试图实现这两种方法首先是我尝试导航到硬编码的HTML内容,包括脚本 -

     webBrowser.NavigateToString(string.Format("<html><head><meta name=\"viewport\" content=\"width=device-width,height=device-height,user-scalable=no\"><script type=\"text/javascript\" src=\"http://rq.vserv.mobi/delivery/js.php?zoneid={0}&amp;vr=S-JS-1.0.0\"></script></head><body></body></html>",p_zoneID));

第二个是有一个本地HTML页面,将它加载到webbrowser的Loaded事件上,然后将一个脚本注入其中 -

     webBrowser.InvokeScript("eval",
                new string[] { "document.getElementById('dynamicTitle').innerHTML = '" + javascript_tag + "';" });

当我获得广告时,这两种方式都适用于第二种情况,因为我将整个脚本映射到该广告时,该广告是可点击的。(我使用webbrowser的SaveToString()方法进行了检查。)

但问题是,在第一种情况下,我得到的广告不可点击,因为与之相关的脚本不存在。(在HTML页面的内容中)(也使用SaveToString()检查;);

我已经尝试了很多,但无法找到任何线索。 现在我的方法应该是知道为什么广告不可点击以及为什么我没有将脚本映射到它。

如果建议,我也可以在两种情况下发布HTML内容。 谢谢是提前,请帮我解决这个问题,因为我在这一点上陷入困​​境,需要澄清事情。

您可以使用JS将脚本附加到头部,它们将按预期运行, 这是StackOverflow的一个很好的答案,显示如何使用工作示例完成它并使用普通的javascript。

希望对你有所帮助。

在第一种情况下,您将在Web浏览器控件中注入完整的html,其中包含javascript源,但您永远不会将其分配给“dynamicTitle”。 你在第二种情况下使用javascript的eval方法和变量“javascript_tag”中的字符串进行分配到“dynamicTitle”的innerHTML。

您也需要在第一种方法中执行相同的操作,但除了作为字符串之外,无法直接在Windows Phone中访问html文档。 以下是代码:

添加对HtmlAgilityPack的引用。 请点击此链接: http//www.tareqateik.com/html-agility-pack%E2%80%93windows-phone-8#.U_eAtPmSySp

//fetch the html as string
string htmlAsString = webBrowser.SaveToString();
//create an html document from the string 
HtmlDocument htmlDocument = new HtmlDocument(); 
htmlDocument.LoadHtml(htmlPage);
htmlDocument.GetElementbyId("dynamicTitle").InnerHtml = javascript_tag;

在此之后,您需要再次在webBrowser中加载已编辑的html文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM