从同一域中的iframe中的元素中获取值

时间:2015-03-09 21:03:09

标签: javascript html iframe

我试图通过使用iframe在一个页面上使用我需要的两个页面来将两个进程压缩为一个。

我有一个包含文本区域的页面(用于发送电子邮件),然后我有一个购买参考页面,其中包含某人购买的详细信息。

我尝试将购买页面的iframe附加到我的电子邮件页面底部,然后获取其中的一些数据并将其插入文本区域。

编辑:这是我到目前为止所做的:

脚本一

//Grabs the selected purchase number
var purchaseNumber = window.getSelection();
purchaseNumber = purchaseNumber.toString();

var purchaseTitle;
var purchaseNumber;

function frameLoaded() {
           purchaseTitle = window.frames['purchaseIframe'].contentDocument.getElementById ('listingTitle');
           purchaseNumber = window.frames['purchaseIframe'].contentDocument.getElementById ('auctionSoldIdDisplay');
           purchaseTitle = purchaseTitle.innerHTML;
           purchaseNumber = purchaseNumber.innerHTML

var purchaseDetails = purchaseTitle + " - " + purchaseNumber;

insertText = insertText.replace("PURCHASEDETAILS", purchaseDetails);
         }  

if(purchaseNumber.length > 0){

var purchaseIframe = document.createElement('iframe');
purchaseIframe.src = 'http://www.mysite.co.nz/Admin/Listing/PurchaseDisplay.aspx?asid=' + purchaseNumber + '&submit1=++GO++';
purchaseIframe.setAttribute("height","1000");
purchaseIframe.setAttribute("width","100%");
purchaseIframe.setAttribute("id","purchaseIframe");
purchaseIframe.setAttribute("onload", "frameLoaded();");
void(document.body.appendChild(purchaseIframe));
alert(purchaseNumber); 
}

脚本二

//Gather the selected template
var selectedTxt = document.getElementById('txtEmailText').value;

//Change the selected txt to a string
var insertText = selectedTxt.toString();

var purchaseTitle = window.frames['purchaseIframe'].contentDocument.getElementById ('listingTitle');
var purchaseNumber = window.frames['purchaseIframe'].contentDocument.getElementById ('auctionSoldIdDisplay');

purchaseTitle = purchaseTitle.innerHTML;
purchaseNumber = purchaseNumber.innerHTML

var purchaseDetails = purchaseTitle + " - " + purchaseNumber;

insertText = insertText.replace("PURCHASEDETAILS", purchaseDetails);


//Pasting the variable in to the textarea
document.getElementById('txtEmailText').value = insertText;

有效地,我突出显示页面上的购买参考编号,然后执行此脚本以使用突出显示的数字打开购买页面。然后我抓住我需要的元素的文本值并将它们粘贴到文本区域。

我仍然对javascript很陌生,在我去的时候自学。

如果我一个接一个地运行上面的脚本,那么它就像一个魅力,但是如果我尝试在设置为iframe的onload()函数中将它们与第二个一起运行,那么它就会赢得<。 / p>

任何帮助都会非常感激,或者如果你能指点我的文章方向来帮助你。

1 个答案:

答案 0 :(得分:0)

我首先想到的是,在尝试从中获取值之前,iframe未完全加载。我的想法是尝试向你的iframe添加一个onload事件,然后当它加载时调用一个抓取值的函数。

我会将purchaseIframe.setAttribute("onload", "frameLoaded();");添加到您的purchaseIframe块,然后将frameLoaded()函数添加到您的脚本中。类似的东西:

      function frameLoaded() {
            var purchaseTitle = window.frames[0].document.getElementById("listingTitle" );
            var purchaseNumber = window.frames[0].document.getElementById("auctionSoldIdDisplay");
            console.log(purchaseTitle.innerHTML);
            console.log(purchaseNumber.innnerHTML);
         }  

看看这样的东西是否抓住了正确的价值观。如果确实如此,你可以将它插入你需要的地方。

我能正确理解你的问题吗?