我正在从我的 OS x 应用程序中打开一个网址。我这样做如下
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];
我正在做一个按钮动作。但是每当我按下按钮时,都会为我打开一个新标签。无论如何我可以阻止它吗?我需要实现的是,如果选项卡已经打开,请刷新它,而不是为 url 打开一个新选项卡。可以实现吗?
提前致谢!
我正在从我的 OS x 应用程序中打开一个网址。我这样做如下
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];
我正在做一个按钮动作。但是每当我按下按钮时,都会为我打开一个新标签。无论如何我可以阻止它吗?我需要实现的是,如果选项卡已经打开,请刷新它,而不是为 url 打开一个新选项卡。可以实现吗?
提前致谢!
尝试从您的可可应用程序中调用 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 窗口的当前选项卡中打开。我还没有尝试过。
这是您正在预览的浏览器的问题,而不是您的应用程序的问题。通常,当您在已打开该 URL 的浏览器中打开相同的 URL时,它会检测到这一点并刷新相应的窗口或选项卡。
您可以通过将书签拖到桌面来轻松地进行测试;然后双击它以在默认浏览器中打开。例如,Safari 将正确刷新。
所以:
编辑:检查了 Crome 和 FF,他们确实打开了新标签...
如果你不是沙盒,你可以使用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];