在Cocoa Webview中调用网页的Javascript函数

8

首先,我对Objective-C和Cocoa完全是新手。我找到了相关资源,但没有显示我想要的内容,而且我似乎无法让其他人为我工作。我需要一个非常简单的示例,其中包含一个包含按钮和具有HTML页面的Web视图的窗口,该页面具有一个接受一个参数(字符串或其他)的JavaScript函数,并通过document.write输出它。(我知道JavaScript)。

然后,当你在Web视图之外点击按钮时,它将调用JavaScript函数,Web视图将从document.write调用中说出一些话。如果有人可以快速制作这样的示例,我会非常感激!

谢谢。

5个回答

16
您可以使用stringByEvaluatingJavaScriptFromString:在Web视图中调用JavaScript。
[ webView stringByEvaluatingJavaScriptFromString: @"myJavascriptFunction()" ];

这并不是你所要求的完整示例,但一个完整的应用程序示例有点超出 StackOverflow 的适当范围。


我的问题是在哪里指定webView?我可以在界面构建器中添加一个webview,但是如何将其与该代码连接起来? - penguinrob
最常见的方法是使用IBOutlets(http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html)。如果这对您来说是新的,我认为您会从阅读一本Cocoa教程书籍中受益,比如《Cocoa Programming for Mac OSX》http://www.amazon.com/Cocoa-Programming-Mac-OS-3rd/dp/0321503619。 - Jon Steinmetz

7

如果你只想调用JavaScript函数,可以按照以下方式实现:

WebScriptObject *script = [_webView windowScriptObject];
[script callWebScriptMethod:@"jsFunctionWithText" withArguments:@[@"Some text"]];

在您的HTML页面中,您需要包含以下内容:
<script>
function jsFunctionWithText(text)
{
    document.write(text);
}
</script>

4

之前的解决方案对我没有用。但是,在苹果开发者文档中,我找到了这种方法,它让我成功地在我的webView中执行了JS代码。

以下是在XCode 4.6.1 (OS X 10.8.3)中对我有效的示例:

[[webView windowScriptObject] evaluateWebScript:@"document.write('derp')"];


2

0

你应该尝试查看我在这个问题上的答案 - 在iPhone应用中显示HTML

然后,你可以将JavaScript添加到你的XCode项目文件中,就像普通的HTML标准一样使用它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接