【问题标题】:c# open url in chrome with hash (#)时间:2019-05-01 标签:c#open url in chrome with hash (#)
【发布时间】:2012-11-01 07:23:35
【问题描述】:

我正在尝试从 c# 在 Chrome 中打开一个 url 并保留哈希 (#)。 示例:

string command = "http://127.0.0.1/test.html#foobar";
ProcessStartInfo ps = new ProcessStartInfo(command) { UseShellExecute = true };
Process.Start(ps);

在启动进程时,包括哈希 (#) 之后的所有内容都会丢失。我可以从命令提示符手动运行 Chrome,包括 url 中的哈希

C:\Program Files (x86)\Google\Chrome\Application>chrome.exe 127.0.0.1/test.html#foobar

当默认浏览器设置为 IE 或 FireFox 时会保留哈希值。

非常感谢任何建议。谢谢!

test.html:

<!DOCTYPE HTML>
<html>
<head>
    <title>Test</title>
</head>
<body>
<h1>Test</h1>
<div style="height:1000px; background: #ccc; width: 100%"></div>
<a name="foobar">foobar</a>
</body>
</html>

注意:我不想假设用户想要使用 chrome,我需要它在用户的默认浏览器中工作。当用户的默认浏览器是 IE 或 Fire Fox 时,它可以工作,但当用户的默认浏览器是 Chrome 时,哈希值会丢失。

【问题讨论】:

  • 尝试在命令中显式运行 Chrome?

标签: c# google-chrome hash process


【解决方案1】:

在默认浏览器中打开网址的命令是start myURL,而不仅仅是myURL

你需要执行命令:

开始“127.0.0.1/test.html#foobar”

请注意,引号需要在结果字符串中,而不是在 C# 中;对应的 C# 代码是:

string command = @"start" + @"""127.0.0.1/test.html#foobar""";

【讨论】:

  • 我需要它在用户设置为默认浏览器的任何浏览器中工作。我不想强迫用户使用 Chrome,如果他们正在使用 Chrome,我只需要将哈希值传递给 url。
  • @SteveHansen 那你为什么专门将问题标记为 chrome,比如在 chrome 中打开它,并在你直接使用 shell 时的示例中使用chrome.exe?首先确定要在 shell 中做什么,然后再考虑将其转换为 C#。无论如何,我相应地更新了答案。
  • 正如我在问题中所解释的,这适用于 IE 和 FireFox。如果用户的默认浏览器设置为 Chrome,就会出现问题。该问题特定于在 Chrome 中打开包含哈希的 URL。开始使用shell的例子直接说明了在Chrome中可以保留hash,但是通过C#运行时(如图),hash就丢失了。
【解决方案2】:

我的默认浏览器是 chrome,这个命令可以正常工作:

System.Diagnostics.Process.Start(@"http://www.bitterminion.com/excel-launchpad#gopro");

“#gopro”保持不变。

【讨论】:

  • 我使用的是 Windows 7。刚刚使用 .NET 2、3、3.5 和 4 对其进行了测试。结果都相同。当您使用配置执行那一行代码时,它是否无法正常工作?
  • 很遗憾,它不适合我。我正在运行 Window 8,Chrome 23.0.1271.97。我已经在几台不同的 Win8 机器上进行了测试,结果相同。
猜你喜欢
  • 2012-02-16
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多