如何从OS x app刷新浏览器URL

时间:2012-11-15 06:01:43

标签: macos cocoa browser nsurl nsworkspace

我正在从我的OS x应用程序中打开一个网址。我这样做如下

[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];

我是按钮动作做的。但每当我按下按钮时,我都会打开一个新标签。我可以阻止它吗?我需要实现的是,如果选项卡已经打开则刷新选项卡,而不是为URL打开一个新选项卡。可以实现吗?

提前致谢!

3 个答案:

答案 0 :(得分:0)

尝试从你的cocoa应用程序中调用applescript,如下所示:

NSAppleScript *run = [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" to do Javascript \"location.reload(true)\" in current tab of window 1"];
[run executeAndReturnError:nil];

该脚本假定要在第一个Safari窗口的当前选项卡中打开要刷新的URL。我没试过。

答案 1 :(得分:0)

这是您正在预览的浏览器的问题,而不是您的应用程序的问题。通常,当您在浏览器中打开相同的网址时,会打开此网址,它会检测到此情况并刷新相应的窗口或标签。

您可以通过将书签拖到桌面来轻松测试;然后双击它以在默认浏览器中打开。例如,Safari将正确刷新。

所以:

  • 通过确保您不更改网址来修复您的代码
  • 尝试其他浏览器,不要使用伪造的Apple脚本修复代码中其他软件的错误。因为,我真的不希望任何应用程序刷新我的 当前 标签(如果您重新加载的不是您的html文档,而是我的购物篮会丢失刷新?)
  • 或者如果您正在使用脚本,请确保在尝试刷新
  • 之前绝对有正确的选项卡

编辑:选中了Crome和FF,他们确实打开了新标签......

答案 2 :(得分:-1)

如果您没有沙盒,可以使用AppleScript

NSString *s = @"tell application \"Safari\"\
    activate\
end tell\
\
tell application \"System Events\"\
    tell process \"Safari\"\
        keystroke \"r\" using {command down}\
    end tell\
end tell";

NSAppleScript *run = [[NSAppleScript alloc] initWithSource:script];
[run executeAndReturnError:nil];