2017-11-24 10 views
0

안녕하세요. 내 페이지에 iframe을 여러 개 추가하고 있습니다. iframe에는 하나의 값만 포함되어 있으므로 부모로부터 양식을 얻고 싶습니다. 스택 오버플로에 게시 된 많은 답변을 시도했지만 그 중 아무 것도 나를 위해 작동하지 않습니다. 아래에서 이미지를 첨부하여 iframe이 페이지에 어떻게 포함되어 있는지 확인할 수 있습니다. 나는 그것을 나중에 사용할 수 있도록 빨간색 프레임의 값을 얻고 싶습니다.부모님의 iframe에서 innerText 가져 오기

enter image description here

코드 : 반환 된 URL이 주 문서와 같은 도메인에서 입니다 만이 경우,
가 다음의 contentDocument을 통과 할 수있는 경우

var graphUrls = tmpSource.getGetFeatureInfoUrl(
    graphCoor, viewResolution, 'EPSG:3857', {'INFO_FORMAT': 'text/html'}); 
    var frr = document.createElement("iframe"); 
    frr.onload = function(){ 
    var jjj = $("iframe body a").text() 
    var kkk = $("iframe body #ras-val").text() 
    console.log("jjj ", jjj) 
    console.log("kkk ", kkk) 
    }; 
    frr.id = sourceParams.year + "-" + sourceParams.month + "-" + sourceParams.day;   
    frr.src = graphUrls 
    document.body.appendChild(frr); 
+0

jQuery를 사용해 보셨습니까? $ ("iframe body a"). 텍스트()? – Kathara

+0

또는 $ ("iframe body # ras-val"). 텍스트()? – Kathara

+0

안녕하세요, 귀하의 솔루션은 빈 문자열 만 반환합니다. 나는 $ ("#"+ String (frames [i] .id)) contents(). find ("a")도 시도했다. 이것은 내부 텍스트 값이 어딘가에 있지만 Edge에서만 저장되어있는 객체를 반환합니다. Chrome에서는이 문자열도 비어 있습니까? 값에 액세스하려고 할 때 내 iframe이 아직로드되지 않았을 수 있습니까? 그렇다면 왜 다른 브라우저에서 다른 동작이 발생합니까? 이 경우 iframe이로드 될 때까지 어떻게 기다려야합니까? –

답변

2

iframe을 $(selector, context)의 두 번째 매개 변수로 사용하십시오.

// frame is you iframeElement 
$('#ras-val', frame.contentDocument).text() 
StackSnippet의 널 (null)이 프레임 ... 우리가 내부 프레임에 액세스하기 위해 선택 후,이 상황에 비해 될 것으로

참고를 허용하지 않습니다 origined 때문에

As a fiddle 그래서 당신은하지 않습니다 "iframe body a"이지만 "body a" 만 전달하십시오.

URL이 동일한 도메인의 URL이 아닌 경우 보안상의 이유로 프런트 엔드 코드에서이 문서에 액세스 할 수 없습니다.

+0

니스,이 작품은 실제로 문자열로 iframe 안에있는 모든 것을 얻을. 한 가지 더 : iframe 스크립트에있는 var rasVal의 값에 액세스하려면 어떻게해야합니까? 내가 어떻게 그럴 수 있니? 도와 줘서 고마워! –

+1

@ Alešinar이 변수가 전역 범위에서 선언 된 경우 Window 객체에 연결되어'frame.contentWindow'를 사용하여 검색 할 수 있습니다. | 위가 지정된 함수에서 정의 된 경우,이를 검색 할 수 없습니다. – Kaiido