0



我有一个问题,我想从Injet一个NATIV VAR我WebSolution。
因为我想知道,当一个的iDevice访问的页面,一些按钮具有可见...
所以我试图somethink那样:。在index.html的我有jQuery脚本:

$(document).ready(function(){ var htmlvar = varFromUiWebView; alert(htmlvar); } 

在我的Xcode项目: 在UIWebView的委托:UiWebviewDidFinishload:,我有类似的东西:

[browser stringByEvaluatingJavaScriptFromString:@"varFromUiWebView = 1;"]; 

因此,结果是脚本崩溃,因为'varFromUiWebView'未定义。 我该如何解决它?

预先感谢您 康斯坦丁

回答

0

所以在这个时候我觉得它不是可以从可变注入:

[theWebView stringByEvaluatingJavaScriptFromString:@"var valueFromNativ = 1"];

到浏览器网站的DOM:
例如:

$(document).ready(function(){ 
    var clientValue = valueFromNativ; 
}); 


这样一个非常简单的解决方法是通过userAgend赶上其访问您的页的设备:

$(document).ready(function() { 
      var isMobile = navigator.userAgent.match(/(iPhone|iPod|iPad|Android)/); 
      if (isMobile == null) { 
       $('#justTablets').hide(); 
      } 
     });<br> 

如果现在有人用ipad我的网站访问<div id="justTablets">Content ...</div>将显示,但如果你是一个简单的桌面,笔记本电脑,它将被隐藏... 在这里看到 http://jsfiddle.net/konstheinrich188/jASy8/

0

在什么时候你做的stringByEvaluatingJavaScriptFromString?

我的猜测是,你必须等待页面完全加载,可以尝试运行额外的JavaScript即你需要有它在

- (void)webViewDidFinishLoad:(UIWebView *)theWebView 

我知道这将意味着你的js警报之前在您有机会设置您想要查看的值之前可能会出现,但这不是问题。

希望这有助于。

+0

嘿,谢谢你的回答!我在' - (void)webViewDidFinishLoad:(UIWebView *)theWebView'和' - (void)webViewDidStarLoad:(UIWebView *)theWebView''中尝试了它,但它似乎没有做到,因为它们都没有将变量写入DOM。有没有办法通过** stringByEvaluatingJavaScriptFromString **写入DOM并使用它? –

0

为什么不能有你的所有iPhone的按钮具有类特定的(即:iphone)的具有显示:无CSS属性,然后在你的应用程序,你可以使用:

- (void)webViewDidFinishLoad:(UIWebView *)theWebView { 
    NSString *insertRule = [NSString stringWithFormat:@"addCSSRule('iphone', 'display: block;')"]; 
    [theWebView stringByEvaluatingJavaScriptFromString:insertRule]; 
} 
+0

这是我实际做的,仍然有效,但我应该怎么做,当我寻找这个:在cshtml-javascript:if varFromUiWebView == 1然后显示它,否则没有显示它? –

相关问题