繁体   English   中英

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

[英]Fetching values from an element in an iframe on the same domain

我正在尝试通过使用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()函数中将它们与第二个脚本一起运行,则不会。

任何帮助将不胜感激,或者如果您可以向我指出帮助的文章。

我首先想到的是,在尝试从iframe中获取值之前,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);
         }  

看看是否有类似的东西可以抓住正确的价值。 如果可以,则可以将其插入所需的位置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM