2012-02-21 223 views
5

我已經通過我的ruby-on-rails應用程序在Excel電子表格中放置了超鏈接。鏈接是一些特權頁面,需要登錄後,我應該採取請求的頁面。然而,發生什麼事是登錄後我在網站的主頁上朗讀。有趣的是,當我右鍵單擊Excel中的鏈接並將鏈接粘貼到網頁瀏覽器網址中時,它按預期工作。所以我不認爲這是我的應用程序的錯,而是我失蹤的Excel中的某些東西?Excel鏈接不會加載頁面,但是當鏈接粘貼到瀏覽器中時它就起作用。

我的情況是幾乎相同的,因爲這場景: http://www.geekstogo.com/forum/topic/289186-excel-2007-hyperlink-loads-web-login-screen-not-linked-urlplease-help-me/

+0

你確定的超級鏈接文字和網址AE相同?文本可能會顯示完整地址(因此它在複製粘貼時起作用),但底層URL格式錯誤? – Widor 2012-02-21 11:06:01

+0

我複製它的方式是在excel表單中右鍵單擊它,然後將地址字段中的所有內容複製到瀏覽器,該工作正常。 如果已經登錄,粘貼鏈接會將我帶到頁面,但在Excel中單擊相同的內容需要我一次登錄頁面(然後到主頁)。 – 2012-02-21 11:10:01

回答

11

這個問題通常發生在IE和我也面臨同樣的問題。

解決方案是非常簡單的

  1. 在您的公共文件夾中創建一個將redirect.html頁面(公用文件夾,因爲你正在使用ROR)
  2. 拷貝到你將redirect.html

<html> 
<body> 
Please wait, loading your page... 
<script type="text/javascript"> 
function getQuerystring(key) { 
key = key.replace(/[\[]/,"\\\[").replace(/ [\]]/,"\\\]"); 
var regex = new RegExp("[\\?&]"+key+"=([^&#]*)"); 
var query = regex.exec(window.location.href); 
return query[1]; 
} 
window.location = window.location.protocol + "//" + window.location.host + "/" + getQuerystring('page'); 
</script> 
</body> 
</html> 

  • 你在Excel中構建的聯繫應該被修改

    對於如舊的鏈接 - http://test.com/post/comments/1 新的鏈接應該是 - http://test.com/redirect.html?page=post/comments/1

  • 您需要通過URL的一部分(基本URL)爲PARAM
  • 這是如何工作的。

    當用戶點擊excel中的鏈接時,它指向redirect.html並且javascript構造實際的URL並再次重定向到適當的頁面,如果已經登錄,用戶將被導航到實際頁面,否則重定向到登錄/主頁面。

    1

    不知道這是一個真正的答案,但我有我的應用程序有同樣的問題。

    整個應用程序,包括主頁,都受到保護(我正在使用Devise)。因此,無論何時用戶想要訪問http://myapp,它都會將其重定向到http://myapp/users/sign_in

    我認爲設計使用301或302重定向到登錄屏幕。

    我的發現是,在Office中點擊鏈接並在IE中打開無法適應此重定向(當Chrome是默認瀏覽器時沒有問題)。它與您的設置相匹配嗎?

    最終,我發現沒有其他解決方案,但直接鏈接到登錄頁面...也許有其他的選擇,但我仍然在尋找他們。

    編輯:發現這篇文章(從2006)about a bug in Outlook這完全符合我們的情況。 同樣,不是一個解決方案,但至少是一個解釋。

    +1

    確實,Chrome是我的默認瀏覽器。這個錯誤在Firefox和Chrome上都是可重現的。雖然我沒有在IE上檢查過它。謝謝你的幫助!請張貼您提出的任何解決方案。 – 2012-02-22 05:38:27

    +0

    提到的錯誤與我們的情況完全吻合。我無法訪問服務器,@Bharath提出的其他解決方案對我無效。所以這個答案不是答案,但至少它是一個解釋,它應該被標記爲有效的。感謝皮埃爾的研究。 – 2012-07-11 17:43:37

    +0

    MS質量保證並不是很容易達到。我盡了我最大的努力,並在[相關的論壇帖子]上發佈了這個問題(http://forums.asp.net/t/1587925.aspx/2/10?Excel+Hyperlink+Session+Problem)。我希望這個錯誤能夠從ASP.NET論壇走向Excel工程。如果你知道更好的方式聯繫他們,請隨時這樣做! – 2012-07-11 18:34:40

    0

    這是Excel的internal URL handling問題,它存在現代網頁設計模式(例如會話+重定向)的問題。

    這是一個客戶端解決方案,它繞過了Excel的內部機制,並使用操作系統默認的URL處理程序。請注意,由於它使用宏,因此此方法需要適當的安全設置。

    在工作表中的VBA模塊,添加如下代碼:

    Option Explicit 
    
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (_ 
        ByVal hWnd As Long, _ 
        ByVal Operation As String, _ 
        ByVal Filename As String, _ 
        Optional ByVal Parameters As String, _ 
        Optional ByVal Directory As String, _ 
        Optional ByVal WindowStyle As Long = vbMinimizedFocus _ 
    ) As Long 
    
    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
        ShellExecute 0, "Open", Target.Address 
    End Sub 
    

    這是基於twoother SO答案的答案。

    -1

    爲了使這項工作簡單地與您的網站的網址替換引號內的文字Target.Address這樣

    ShellExecute 0, "Open","http://www.stackoverflow.com" 
    
    相關問題