簡體   English   中英

如何使用stringbyEvaluationJSS將Javascript插入$(document).ready(function()

[英]How to Inject Javascript with stringbyEvaluationJSS to $(document).ready(function()


你好
我有一個問題,我想將一個變種從nativ注入我的WebSolution。
因為我想知道,當iDevice訪問該頁面時,某些按鈕必須可見...
所以我嘗試了這樣的想法: 在index.html上,我有JQuery腳本:

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

在我的xCode項目中:在UIWebview委托:UiWebviewDidFinishload:上,我有類似的內容:

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

因此,結果是腳本崩潰,因為未定義'varFromUiWebView'。 我該如何解決?

預先謝謝你康斯坦丁

在什么時候您要執行stringByEvaluatingJavaScriptFromString?

我的猜測是,在嘗試運行額外的javascript之前,您必須等待頁面完全加載,即需要將其放入

- (void)webViewDidFinishLoad:(UIWebView *)theWebView

我意識到這意味着您的js警報可能會在您有機會設置要查看的值之前出現,但這不是問題。

希望這可以幫助。

為什么不讓所有iPhone按鈕都具有特定類(即iphone),並具有display:none css屬性,然后在您的應用中可以使用:

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

因此,目前我認為無法從中注入變量:

[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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM