在 UIWebView 上加载 javascript
Posted
技术标签:
【中文标题】在 UIWebView 上加载 javascript【英文标题】:Loading javascript on UIWebView 【发布时间】:2015-03-18 10:57:47 【问题描述】:我有一个javascript
,只是想把它加载到我的UIWebView
上,不知道我做错了什么。
这是我的脚本:
<script type='text/javascript'>(function () var done = false; var script = document.createElement('script'); script.async = true; script.type = 'text/javascript'; script.src = 'https://app.purechat.com/VisitorWidget/WidgetScript'; document.getElementsByTagName('HEAD').item(0).appendChild(script); script.onreadystatechange = script.onload = function (e) if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) var w = new PCWidget( c: 'ea5935c8-1f44-4172-bcd7-18d6f316ad75', f: true ); done = true; ; )();</script>
这是我的代码:
NSString *temp =@"<script type='text/javascript'>(function () var done = false; var script = document.createElement('script'); script.async = true; script.type = 'text/javascript'; script.src = 'https://app.purechat.com/VisitorWidget/WidgetScript'; document.getElementsByTagName('HEAD').item(0).appendChild(script); script.onreadystatechange = script.onload = function (e) if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) var w = new PCWidget( c: 'ea5935c8-1f44-4172-bcd7-18d6f316ad75', f: true ); done = true; ; )();</script>";
[_mainWebView stringByEvaluatingJavaScriptFromString:temp];
这是我的空白webView
...:(
【问题讨论】:
【参考方案1】:您不需要在 javascript 中包含 script 标签。 stringByEvaluatingJavaScriptFromString
尝试直接在 webview 中执行给定的 javascript 字符串。
试试这个方法:
NSString *temp =@"(function () var done = false; var script = document.createElement('script'); script.async = true; script.type = 'text/javascript'; script.src = 'https://app.purechat.com/VisitorWidget/WidgetScript'; document.getElementsByTagName('HEAD').item(0).appendChild(script); script.onreadystatechange = script.onload = function (e) if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) var w = new PCWidget( c: 'ea5935c8-1f44-4172-bcd7-18d6f316ad75', f: true ); done = true; ; )();";
【讨论】:
@AyanKhan 你在调用这个javascript之前加载了webview吗?它有内容还是空白? 我正在这样做:[mainWebView stringByEvaluatingJavaScriptFromString:temp]; [self.view addSubview:mainWebView]; 这是javascript执行后的html dom。似乎其中一个脚本文件的 src 是错误的。检查 WidgetScript 的第 45 行<html> <head> <script async="" type="text/javascript" src="https://app.purechat.com/VisitorWidget/WidgetScript"></script><script async="" type="text/javascript" src="https://app.purechat.com/VisitorWidget/WidgetVersions/ea5935c8-1f44-4172-bcd7-18d6f316ad75/_WidgetJPCB0"></script><script async="" type="text/javascript" src="undefined/VisitorWidget/Widget/ea5935c8-1f44-4172-bcd7-18d6f316ad75/undefined/_WidgetJPCB1.js"></script> </head> <body> </body> </html>
以上是关于在 UIWebView 上加载 javascript的主要内容,如果未能解决你的问题,请参考以下文章
UIWebview 在 iPhone 设备上很慢,在模拟器上很快