iframe의 현재 위치를 어떻게 알 수 있습니까?
저는 사용자가 iframe에서 외부 콘텐츠를 검색하고 동일한 페이지에서 빠르게 데이터를 입력할 수 있는 기본 데이터 입력 애플리케이션을 구축했습니다.데이터 변수 중 하나는 URL입니다.이상적으로는 iframes 현재 URL을 Javascript가 있는 텍스트 상자에 로드할 수 있으면 좋겠습니다.보안 문제 때문에 이런 일이 일어나지 않을 것이라는 것을 이제 알았습니다.
서버 쪽에서 한 일이 있습니까?또는 어떤 것에 대해 알고 있습니다.브라우저 컨트롤의 넷 브라우저입니다.궁극적인 목표는 사용자가 iframe에서 보고 있는 페이지의 URL을 쉽게 추출할 수 있는 방법을 제공하는 것입니다. 반드시 iframe일 필요는 없으며 브라우저에서 브라우저를 사용하는 것이 이상적입니다.
고마워, 아담
에서 파어에 3서몇 가테했 습를니의 값을 를 몇 가지 ..src
그리고..documentWindow.location.href
순식간에iframe
더 (The) ()documentWindow
를 합다니고라고 합니다.contentDocument
크에서 대서신에롬그래..documentWindow.location.href
크롬에서 그것은 될 것입니다..contentDocument.location.href
.)
src
에 로 사 iframe 없 입 마 막 지 니 URL 에 대한 첫 번째 값 포함 창 doing:, URL에서 합니다.
document.getElementById("myiframe").src = 'http://www.google.com/';
사용자가 iframe 내부를 탐색하면 더 이상 src를 사용하여 URL 값에 액세스할 수 없습니다.이전 예제에서 사용자가 www.google.com 에서 벗어나 다음 작업을 수행하는 경우:
alert(document.getElementById("myiframe").src);
"http://www.google.com "을 계속 받을 수 있습니다.
documentWindow.location.href
할 수 있지만,iframe을 됩니다.
액세스를 시도할 경우documentWindow.location.href
아래에 있는 것)documentWindow
및 않는 시킵니다.
document.getElementById("myiframe").src = 'http://www.google.com/';
alert(document.getElementById("myiframe").documentWindow.location.href);
Error: Permission denied to get property Location.href
다른 브라우저는 테스트하지 않았습니다.
도움이 되길 바랍니다!
document.getElementById('iframeID').contentWindow.location.href
도메인 간 iframe 위치에 전혀 액세스할 수 없습니다.
저는 이거 써요.
var iframe = parent.document.getElementById("theiframe");
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var currentFrame = innerDoc.location.href;
HTA는 일반 윈도우 애플리케이션처럼 작동합니다.
HTML 코드를 작성하여 .hta 파일로 저장합니다.
그러나 적어도 한 가지 단점이 있습니다.브라우저는 .hta 파일을 열 수 없습니다. 일반 .exe 프로그램으로 처리됩니다.따라서 웹 페이지에 .hta에 대한 링크를 놓으면 HTA 파일을 열거나 저장할지 묻는 다운로드 대화 상자가 열립니다.문제가 없는 경우 "열기"를 누르면 새 창이 열립니다(툴바가 없으므로 뒤로 단추도 주소 표시줄도 메뉴 모음도 없음).
했는데, 에 저는당이원것하매과비것했해지만야대을신에슷한우, 신는에▁i▁of.iframes
나는 진짜를 사용했습니다.frameset
.
기본 페이지는 .hta 파일이어야 하며, 다른 페이지는 일반 .htm 페이지(또는 .php 또는 기타 페이지)여야 합니다.
다음은 두 개의 프레임이 있는 HTA 페이지의 예입니다. 맨 위 페이지에는 두 번째 프레임 URL이 포함된 버튼과 텍스트 필드가 있습니다. 버튼은 필드를 업데이트합니다.
프레임셋.hta
<html>
<head>
<title>HTA Example</title>
<HTA:APPLICATION id="frames" border="thin" caption="yes" icon="http://www.google.com/favicon.ico" showintaskbar="yes" singleinstance="no" sysmenu="yes" navigable="yes" contextmenu="no" innerborder="no" scroll="auto" scrollflat="yes" selection="yes" windowstate="normal"></HTA:APPLICATION>
</head>
<frameset rows="60px, *">
<frame src="topo.htm" name="topo" id="topo" application="yes" />
<frame src="http://www.google.com" name="conteudo" id="conteudo" application="yes" />
</frameset>
</html>
- 있다니라는 게
HTA:APPLICATION
파일에 대한 일부 속성을 설정하는 태그입니다. 가지고 있는 것은 좋지만 반드시 필요한 것은 아닙니다. - 다음을 배치해야 합니다.
application="yes"
프레임의 태그에 있습니다.또한 프로그램에 속해 있으며 모든 데이터에 액세스할 수 있어야 합니다(그렇지 않으면 프레임에 이전에 발생한 오류가 계속 표시됩니다).
topo.htm
<html>
<head>
<title>Topo</title>
<script type="text/javascript">
function copia_url() {
campo.value = parent.conteudo.location;
}
</script>
</head>
<body style="background: lightBlue;" onload="copia_url()">
<input type="button" value="Copiar URL" onclick="copia_url()" />
<input type="text" size="120" id="campo" />
</body>
</html>
- 필드를 가져오기 위해 getElement 함수를 사용하지 않았습니다. HTA 파일에서 ID를 가진 모든 요소는 즉시 객체가 됩니다.
이것이 당신과 이 질문에 대한 다른 사람들에게 도움이 되기를 바랍니다.제 문제를 해결했습니다. 당신과 같은 문제인 것 같습니다.
자세한 내용은 여기에서 확인할 수 있습니다. http://www.irt.org/articles/js191/index.htm
=] 즐기십시오.
저는 당신의 서버 측면 아이디어가 마음에 들어요, 비록 제가 제안한 구현이 약간 거창하게 들릴지라도요.
.inner를 설정할 수 있습니다.서버 측에서 가져오는 HTML 컨텐츠에 대한 iframe의 HTML.이것을 어떻게 잡느냐에 따라 상대 경로 대 절대 경로에 주의를 기울여야 할 것입니다.
또한 잡는 페이지가 다른 페이지와 상호 작용하는 방식에 따라 전혀 작동하지 않을 수 있습니다(잡는 페이지에 대해 설정된 쿠키는 도메인 간에 작동하지 않습니다. Javascript에서 상태가 추적되고 있을 수 있습니다...이것이 작동하지 않을 수 있는 많은 이유가 있습니다.)
미러링하려는 페이지의 현재 상태를 추적하는 것이 이론적으로 가능하다고 생각하지 않지만 확실하지 않습니다.사이트에서 서버 측의 모든 것을 추적할 수 있습니다. 이 상태에 액세스할 수 없습니다.페이지 로드에서 변수가 랜덤 값 서버 측으로 설정되는 경우를 상상해 보십시오. 이 상태를 어떻게 캡처하시겠습니까?
이 아이디어들이 도움이 되나요?
브라이언 J. 스티나르
이게 도움이 되나요?
http://www.quirksmode.org/js/iframe.html
파이어폭스에서만 테스트했지만, 다음과 같은 것이 있다면:
<iframe name='myframe' id='myframe' src='http://www.google.com'></iframe>
다음을 사용하여 주소를 얻을 수 있습니다.
document.getElementById('myframe').src
제가 당신의 질문을 제대로 이해했는지는 모르겠지만 어쨌든 :)
Ra-Ajax를 사용하여 iframe을 Window 컨트롤과 같은 내부에 둘 수 있습니다.일반적으로 저는 사람들에게 iframe을 사용하도록 권장하지 않습니다(무엇이든).
또 다른 방법은 HTML을 서버에 로드하고 레이블 등의 내용으로 창에 직접 보내는 것입니다.이 Ajax RSS 파서가 여기서 다운로드할 수 있는 소스에서 RSS 항목을 로드하는 방법을 확인하십시오(오픈 소스 - LGPL).
(Disclaimer; 저는 라-아약스와 함께 일합니다...)
이 애플리케이션에는 사용자에게 링크 또는 iframe이 외부 사이트를 탐색할 수 있는 용량이 제공되는 iframe이 있습니다.그런 다음 사용자가 검색한 URL을 캡처하려고 합니다.
기억해야 할 것.URL이 외부 소스에 대한 것이기 때문에 Javascript(또는 해당 사항에 대한 클라이언트 측 액세스)를 통해 이 iframe과 상호 작용할 수 있는 양이 제한됩니다. 이를 브라우저 교차 도메인 보안이라고 합니다.여기에 제시된 교차 도메인, 교차 프레임 Javascript와 같은 영리한 해결 방법이 있지만, 이 해결 방법은 이 경우에 적용되지 않는다고 생각합니다.
필요에 따라 위치만 액세스할 수 있습니다.
코드가 더 탄력적이고 오류 발생 가능성이 더 낮아지도록 하는 것이 좋습니다.자바스크립트 오류를 표시하도록 IE 또는 FF를 구성하여 웹을 탐색해 보십시오.당신은 자바스크립트 오류가 얼마나 많이 발생하는지에 놀랄 것입니다. 왜냐하면 자바스크립트 오류가 많이 발생하기 때문입니다. 자바스크립트는 계속해서 확산되고 있습니다.
이 솔루션은 문제의 iframe이 사용자가 javascript를 실행하는 것과 동일한 "window" 컨텍스트라고 가정합니다. (즉, 다른 프레임이나 iframe에 포함되지 않으며, 이 경우 javascript 코드가 더 많이 관여하므로 윈도우 계층을 통해 재귀적으로 검색해야 할 가능성이 높습니다.)
<iframe name='frmExternal' id='frmExternal' src='http://www.stackoverflow.com'></frame>
<input type='text' id='txtUrl' />
<input type='button' id='btnGetUrl' value='Get URL' onclick='GetIFrameUrl();' />
<script language='javascript' type='text/javascript'>
function GetIFrameUrl()
{
if (!document.getElementById)
{
return;
}
var frm = document.getElementById("frmExternal");
var txt = document.getElementById("txtUrl");
if (frm == null || txt == null)
{
// not great user feedback but slightly better than obnoxious script errors
alert("There was a problem with this page, please refresh.");
return;
}
txt.value = frm.src;
}
</script>
이게 도움이 되길 바랍니다.
iframe의 src 속성에 액세스할 수 있지만 처음 로드된 URL만 제공됩니다. 사용자가 iframe을 통해 탐색하는 경우 보안 문제를 해결하기 위해 HTA를 사용해야 합니다.
http://msdn.microsoft.com/en-us/library/ms536474(VS.85).aspx
링크를 체크아웃하여 HTA를 사용하고 iframe의 "application" 속성을 설정하면 문서에 액세스할 수 있습니다.href 속성을 지정하고 DOM 요소 및 해당 값을 포함하여 원하는 모든 정보를 구문 분석합니다.
언급URL : https://stackoverflow.com/questions/44359/how-do-i-get-the-current-location-of-an-iframe
'programing' 카테고리의 다른 글
add(), replace() 및 addToBackStack()의 차이 (0) | 2023.08.05 |
---|---|
Python Pandas:".value_counts" 출력을 데이터 프레임으로 변환 (0) | 2023.08.05 |
유형 ORM 0.3.7 데이터 소스 연결 풀이 갑자기 닫혔습니다. (0) | 2023.08.05 |
수행줄 제목에서 사용자 지정 글꼴을 설정하는 방법? (0) | 2023.08.05 |
쿼리가 두 개 이상의 행을 반환하는 경우 SQL 삭제 (0) | 2023.08.05 |