簡體   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