0

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

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

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

提前致谢!

4

3 回答 3

0

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

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

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

于 2012-11-15T10:26:39.160 回答
0

这是您正在预览的浏览器的问题,而不是您的应用程序的问题。通常,当您在已打开该 URL 的浏览器中打开相同的 URL时,它会检测到这一点并刷新相应的窗口或选项卡。

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

所以:

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

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

于 2013-06-08T11:48:18.780 回答
-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];
于 2012-11-15T10:27:40.903 回答