2014-03-05 2 views
3

우리 사이트에는 필립 스토어의 iFrame을로드하는 페이지가 있습니다. 우리 사이트에있는 페이지를 iFrame에있는 제품의 세부 정보로로드하는 링크가 포함 된 이메일을 보내려합니다. 아래 코드는 작동하지만 사용자가 URL에 정의 된 페이지 요소가있는 링크를 사용하지 않고 사이트의 페이지로 직접 이동하면 중단됩니다.iframe source from 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 변경을 "정의되지 않은"온로드)을

여기

는 지금까지이 작업은 다음과 같습니다

<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

작동하지 않는 URL이 '페이지'매개 변수를 잃어 버립니다.

자바 스크립트가 URL에서 모든 매개 변수를 가져 와서 배열에 넣습니다. 그런 다음 해당 배열의 'page'매개 변수를 찾습니다.

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

분명히 누락되었습니다. 따라서 iframe에 대한 '정의되지 않은'소스입니다.

는 올바른 'ID'매개 변수를 확인하기 위해 귀하의 자바 스크립트에 작은 조각을 추가 할 수 있고 그 16500이며, 당신이 '페이지'매개 변수가없는 경우, 당신은 자바 스크립트 리디렉션 할 수 있습니다

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 url의 기본을 정의하고 링크의 number 매개 변수 만 전달하기로 결정했습니다. 또한 페이지 매개 변수가 정의되지 않고 iframe 소스가 undefined로 변경되는 문제가 수정되었습니다. 다시 한 번 감사드립니다! – lmg