1

好的,我正在为 iPhone 制作应用程序(仍在学习,了解 Objective-C 和 Xcode),并且进展顺利。我正在制作的应用程序已经为 Android 制作。有一部分应用程序正在为 Android 打开“硬编码”网页,这就是我遇到问题的部分。该网页上的 JavaScript 的部分代码如下所示:

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

这是我唯一感兴趣的事情。例如,我只想将“onclick”部分作为字符串获取。因此,每当单击该部分时,我都想将其作为字符串获取,以便之后我可以执行自己的逻辑,调用某些方法或任何东西。我尝试使用

shouldStartLoadWithRequest

但我无法在点击时注销任何内容。我在这里做错了吗?也许我缺乏javascript知识是个问题,而且我不懂基础知识,但我认为应该可以将那部分从onclick引号转换为字符串。这就是我所需要的。

我忘记了一件非常重要的事情。我不能触摸那个用于 Android 的 javaScript,这就是 Android 应用程序现在的工作方式。这就是为什么我想做这个“字符串”的事情。

我可以用 stringByEvaluatingJavaScriptFromString 和 document.getElementsByClassName JavaScript 方法做些什么吗?

干杯 peps :)

4

1 回答 1

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
  }
于 2013-02-24T16:00:10.617 回答