2013-02-24 42 views
1

好的,我正在爲iPhone應用程序(仍在學習,瞭解Objective-C和Xcode),它會很好。我正在製作的應用程序已針對Android進行製作。應用程序正在爲Android打開「硬編碼」網頁,這是我遇到問題的一部分。在該網頁上的JavaScript有看起來像這樣的代碼的一部分:iOS WebView Javascript

<a onclick="Android.setCategory('US');" class="navigator_item cat_US">US</a> 

這是我很感興趣的唯一的事情我只想得到那個「點擊」一部分,例如一個字符串。所以,無論何時單擊該部分,我都希望將其作爲一個字符串,以便我可以在此之後執行自己的邏輯,調用某種方法或任何其他方法。我嘗試使用

shouldStartLoadWithRequest 

但我無法註銷任何點擊。我在這裏做錯了什麼?也許我對JavaScript知識的缺乏是問題,我不瞭解基礎知識,但我認爲應該有可能將這部分從onclick引號轉換爲字符串。這就是我需要的。

我忘了一件很重要的事情。我無法接觸到用於Android的javaScript,這就是Android應用程序的工作原理。這就是爲什麼我想要做這個「串」的事情。

有什麼我可以用stringByEvaluatingJavaScriptFromString和document.getElementsByClassName JavaScript方法做什麼?

乾杯PEPS :)

回答

2

如果你有自由更改onclick目標,你可以這樣做:

<a onclick="setCategory('US');">US</a> 

在您的網頁,然後爲你的UIWebView做這樣的事情:

[uiWebView stringByEvaluatingJavaScriptFromString: @"function setCategory(category) {alert("Category is " + category);};"]; 

如果您有設置類別時要執行的iOS邏輯,我使用的技術是自定義URL方案。例如,setCategory可能是:

setcategory://US/ 

您將您的JavaScript改爲

[uiWebView stringByEvaluatingJavaScriptFromString: @"function setCategory(category) {window.location = 'setcategory://'+category+'/';};"]; 

,然後在shouldStartLoadWithRequest方法:

NSString* scheme = [[request URL]scheme]; 
    NSString* host = [[request URL]host]; // "host" is actually the category 

    if ([scheme isEqualToString:@"setcategory"]) { 
    // Do so logic to set the category 
    } 
+0

我真的很抱歉,同時我在想如何爲了解釋我需要什麼,我忘了提及主要問題......我無法觸及那個javaScript。它現在正在與Android一起工作,這是主要問題... 這就是爲什麼我想要將onclick「content」轉換爲字符串。就這樣我可以在點擊之間做出區別。這就是我想要檢查什麼是點擊。 – jovanjovanovic 2013-02-24 19:54:22

+0

有一些技巧可以用Javascript的arguments.callee.name屬性來獲得你所使用的函數的名字,但是如果你不能觸摸JavaScript,那麼你就沒有好處。這聽起來像你要做的是實際解析你已經加載到你的UIWebView中的頁面的DOM,並重寫JavaScript,onclick is * going *嘗試運行JavaScript,你不能攔截,然後決定要做其他事情,你將不得不在你的應用中提供可運行的JavaScript。 – Joe 2013-02-24 20:59:26

+0

有一個更簡單的方法。使用'stringByEvaluatingJavaScriptFromString:'使WebView創建一個名爲'Android'的Javascript對象,其值爲'window.Android = {setCategory:function(){...},...};' – duskwuff 2013-02-24 21:16:01