0



,我有一个问题,我想从 nativ 向我的 WebSolution 注入一个 var。
因为我想知道,当一个 iDevice 访问页面时,一些按钮必须是可见的......
所以我尝试了一些这样的想法:。在 index.html 我有 JQuery 脚本:

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

在我的 xCode 项目中:在 UIWebview 代表:UiWebviewDidFinishload: 上,我有类似的东西:

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

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

提前谢谢康斯坦丁

4

3 回答 3

0

您在什么时候执行 stringByEvaluatingJavaScriptFromString?

我的猜测是,在尝试运行额外的 javascript 之前,您必须等待页面完全加载,即您需要将其放入

- (void)webViewDidFinishLoad:(UIWebView *)theWebView

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

希望这可以帮助。

于 2013-02-01T13:28:49.323 回答
0

为什么不让你所有的 iPhone 按钮都有一个特定的类(即:iphone)有一个 display:none css 属性,然后在你的应用程序中你可以使用:

- (void)webViewDidFinishLoad:(UIWebView *)theWebView {
    NSString *insertRule = [NSString stringWithFormat:@"addCSSRule('iphone', 'display: block;')"];
    [theWebView stringByEvaluatingJavaScriptFromString:insertRule];
}
于 2013-02-07T14:12:57.107 回答
0

所以此时我认为不可能将变量从:注入

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

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

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


所以一个非常简单的解决方法是通过 userAgen 捕获访问您页面的设备:

  $(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/

于 2013-07-10T06:18:15.480 回答