2012-11-12 68 views
5

我想在c#中打開Chrome中的網址並保留哈希(#)。 實施例:c#在哈希中打開網址(#)

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

後一切以及包括該井號(#)被啓動進程時丟失。我可以包括在URL中的散列從命令提示符手動運行的Chrome

C:\ Program Files文件(x86)的\谷歌\瀏覽器\應用程序>的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時,散列會丟失。

+0

嘗試在命令中顯式運行Chrome嗎? –

回答

1

在默認瀏覽器中打開URL的命令是start myURL,而不僅僅是myURL

你需要執行以下命令:

啓動「127.0.0.1/test.html#foobar」

注意,報價必須得到的字符串中,不在C#中;對於C#代碼是:

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

我需要這個工作在用戶設置爲默認瀏覽器的地方。我不想強制用戶使用Chrome,我只是需要它將哈希傳遞到他們使用Chrome的url。 – SteveHansen

+0

@SteveHansen那麼爲什麼你特意將問題標記爲chrome,就像在chrome中打開它一樣,並且在你的例子中使用'chrome.exe'來直接使用shell?首先確定你想在shell中做什麼,然後擔心將它翻譯成C#。無論如何,我相應地更新了答案。 – Servy

+0

正如我在問題中解釋的,這在IE和FireFox中有效。如果用戶的默認瀏覽器設置爲Chrome,則會出現問題。該問題特定於在Chrome中打開包含散列的網址。直接使用shell啓動的例子說明了哈希可以保留在Chrome中,但是當通過C#運行時(如圖所示),哈希將丟失。 – SteveHansen

0

我的默認瀏覽器是Chrome和該命令完全正確的工作原理:

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

的 「#gopro」 保持不變。

+0

您運行的是Windows和.Net Framework的哪個版本? – SteveHansen

+0

我在Windows 7上。剛剛用.NET 2,3,3.5和4進行了測試。所有結果都一樣。當您使用您的配置執行完整的代碼行時,它不能正常工作嗎? –

+0

不幸的是,它不適合我。我正在運行Window 8,Chrome 23.0.1271.97。我在幾臺不同的Win8機器上測試過相同的結果。 – SteveHansen