2014-03-05 58 views
3

我們在我們的網站上有一個頁面,加載一個afillate商店的iFrame。我們希望發送帶有鏈接的電子郵件,這些鏈接將加載我們網站上的頁面,並提供iFrame中特色產品的詳細信息。我在下面的代碼正在工作,但是如果用戶直接訪問我們網站上的頁面,則不會使用與URL中定義的頁面元素的鏈接。iframe來自URL

不確定它是否重要,但iframe源位於完全不同的域,我無法控制它。

這工作:http://www.mysite.html/thispage.aspx?id=16500&page=http://myiframesource.com/detail/0307959473

這不起作用:http://www.mysite.html/thispage.aspx?id=16500(在IFRAME SRC更改爲 「不確定」 的onload)

這是我到目前爲止有:

<script language="javascript"> 
    window.onload = updateiframe; //event handler (calls the function) 

    function updateiframe() { 
     function getUrlVars() { 
      var vars = [], hash; 
      var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 

      for(var i = 0; i < hashes.length; i++) { 
       hash = hashes[i].split('='); 
       vars.push(hash[0]); 
       vars[hash[0]] = hash[1]; 
      } 

      return vars; 
     } 

     var hash = getUrlVars(); 
     var myiframepage = decodeURIComponent(hash['page']); 
     document.getElementById('myiframe').src = myiframepage; 
    } 
</script> 

<iframe id="myiframe" name="myiframe" src="myiframesource.com" width="555" height="2000" border="0" style="border: 0px solid #ffffff;"></iframe> 

謝謝提前尋求你的幫助!

+0

要求您的用戶通過單擊電子郵件中的鏈接訪問該頁面!因爲它是從iframe的'src'獲取的url獲得的!如果'iframe'src不會更改每個用戶,那麼直接在'iframe'的src'中輸入鏈接! – rps

回答

1

無法使用的網址錯過了「網頁」參數。

您的JavaScript正在從URL中獲取所有參數並將它們放入數組中。接下來,它試圖找到該數組中的'頁面'參數:

var myiframepage = decodeURIComponent(hash['page']); 

顯然缺失。因此,您的iframe的'未定義'來源。

你可以一小塊添加到您的JavaScript來檢查正確的「ID」參數,而且如果是16500,你缺失「頁」參數,你可以做一個JavaScript重定向:

var hash = getUrlVars(); 
var myiframepage = decodeURIComponent(hash['page']); 
if(typeof(myiframepage) == 'undefined') { 
    var id = decodeURIComponent(hash['id']); 
    if(typeof(id) != 'undefined' && id == '16500') { 
     window.location.replace('http://www.mysite.html/SiteText.aspx?id=16500&page=http://myiframesource.com/detail/0307959473'); 
    } 
} 
else { 
    document.getElementById('myiframe').src = myiframepage; 
} 

上面顯示的這段代碼應該照顧那些沒有鏈接從你的電子郵件並直接瀏覽到頁面的人......

並且要謹慎地傳遞這樣的數據。人們可以通過提供帶有不同頁面參數的URL,輕鬆劫持您的iframe並在其中顯示惡意網站!

+0

這應該是正確的答案! – kcak11

+0

非常感謝你!這工作對我來說,但根據您對劫持的評論,我決定去一個不同的路線,並定義iframe網址的基礎,並只傳遞鏈接中的數字參數。這也解決了未定義頁面參數和將iframe源更改爲未定義的問題。再次感謝! – lmg