2012-04-23 49 views
2

我有一個這樣的鏈接。它從instagram api獲得。如何獲取使用javascript加載的標籤值

http://localhost:60785/access_token.aspx/#access_token=43667613.4a1ee8c.791949d8f78b472d8136fcdaa706875b 

如何從代碼隱藏中獲取此鏈接? 我可以把它與js,但分配給標籤後我無法得到它。我的意思是:

<script> 
    function getURL(){ 
     document.getElementById('lblAccessToken').innerText = location.href; 
    } 
</script> 

這個js函數在body onload事件中。我如何從代碼隱藏中獲得這個innerText值?

+3

'#...'部分永遠不會發送到服務器。 – 2012-04-23 00:27:53

+0

我知道這一點,但我們可以通過javascript獲得它並分配給標籤。但是我無法從代碼隱藏中獲得標籤值。 – Kadir 2012-04-23 00:29:37

+0

啊,那麼你的問題標題會讓我困惑......''innerText'在Firefox中不可用,也許這就是問題所在。或者ID爲'lblAccessToken'的元素不存在。或者這個元素不接受任何內容。沒有更多的信息,這是不可能回答的。 – 2012-04-23 00:30:33

回答

1

如果您使用的是ASP.NET 4.0和jQuery,它相當容易。否則,你可能不得不處理損壞的ID,必須自己處理DOMReady。試試這個

標記

<asp:Label ID="lblAccessToken" runat="server" ClientIDMode="Static"></asp:Label> 

的JavaScript

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script> 
    $(document).ready(function(){ 
     var myToken = GetHashParameterByName("access_token"); 
     $("#lblAccessToken").html(myToken); 
    }); 

    function GetHashParameterByName(name) {  
     var match = RegExp('[#&]' + name + '=([^&]*)') 
       .exec(window.location.hash); 
     return match && decodeURIComponent(match[1].replace(/\+/g, ' '));  
    } 
</script> 

你想在Page_Load權價值?我還沒有想出一個辦法自己取上Page_Load。我的哈希值通常做的這些事情

  1. 一個傳遞散列值到jQuery的AJAX方法,並將其存儲在那裏。
  2. 抓住散列值,並重定向到同一頁面在Page_Load中它轉換成一個查詢字符串

的JavaScript

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script> 
    $(document).ready(function(){ 
     var myToken = GetHashParameterByName("access_token") || ""; 
     if(my_token !=== ""){ 
      window.location = window.location.split("/#")[0] + "?access_token=" + myToken; 
     } 
    }); 

    function GetHashParameterByName(name) {  
     var match = RegExp('[#&]' + name + '=([^&]*)') 
       .exec(window.location.hash); 
     return match && decodeURIComponent(match[1].replace(/\+/g, ' '));  
    } 
</script> 

現在後,抓住它像

string token = Request.QueryString["access_token"]; 

請注意,它需要再往返一次服務器,所以效率不高。但這就是我所做的。

+0

要做到上面沒有jQuery,用'window.onload = function(){...}替換$(document).ready(...)''和'$(「#lblAccessToken」)。html(myToken); '用'document.getElementById('lblAccessToken')。innerHTML = myToken;'。 – RobG 2012-04-23 00:50:29

+1

:)我知道。我認爲DOMReady更安全。就這樣。我更關心不使用DOMReady。我決定不把它扔在OP上。 http://stackoverflow.com/a/1207005/17447 – naveen 2012-04-23 00:53:28

+0

好吧,我只想看看POJS,讓OP將它調整到他們選擇的庫。 – RobG 2012-04-23 03:56:24

相關問題