繁体   English   中英

Objective-C / Cocoa windowScriptObject命令无法从加载的页面中运行

[英]Objective-C/Cocoa windowScriptObject commands not working from loaded page

我试图让'windowScriptObject'工作,这是我的Objective-C代码如下:

- (void)consoleLog:(NSString *)aMessage {
    NSLog(@"JSLog: %@", aMessage); }

+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector {
    if (aSelector == @selector(consoleLog:)) {
        return NO;
    }

    return YES; }

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {

    NSLog(@"Did finnish load...");
    scriptObject = [sender windowScriptObject];

    //obviously, this returns undefined
    NSLog(@"Object: %@",[scriptObject evaluateWebScript:@"MyApp"]);

    //set the value of MyApp
    [scriptObject setValue:self forKey:@"MyApp"];

    //this now returns the value
    NSLog(@"Object: %@",[scriptObject evaluateWebScript:@"MyApp"]);




    //this command now works from here
    [scriptObject evaluateWebScript:@"MyApp.consoleLog_('Test');"]; 
}

注入JavaScript时,上面的代码有效( evaluateWebScript

这是控制台输出的内容:

2012-12-06 08:03:05.605 BetterDesktop[8669:303] Did finnish load...
2012-12-06 08:03:05.605 BetterDesktop[8669:303] Object: undefined
2012-12-06 08:03:05.606 BetterDesktop[8669:303] Object: <WidgetsDelegate: 0x10133de60>
2012-12-06 08:03:05.607 BetterDesktop[8669:303] JSLog: Test

该命令有效,但是当我使用页面时它不起作用。

<html>
<head>
<script type="text/javascript">
if (typeof(MyApp) != "undefined"){
document.write('<br/><h1>hi</h1>');
MyApp.consoleLog_('Test from HTML');
}
else{

document.write('<br/><h1>Not Defined</h1>');
}

</script>
</head>
<body>
</body>
</html>

它认为“MyApp”未定义,有什么建议吗?

(顺便说一句,WebView没有连接到这个类,它只是委托)

您应该从-webView:didClearWindowObject:forFrame: WebFrameLoadDelegate方法而不是-webView:didFinishLoadForFrame:对象注入WebView。 在调用didClearWindowObject之前,不保证window对象已正确初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM