Я закончил сценарий, который запускается на странице, содержащей текстовое поле, где отправляется электронное письмо.Выполнение скрипта перед загрузкой страницы
Я занимаюсь различными вещами на этой странице, однако один из них - загрузить iframe на основе выбранного номера, а затем, после того как загрузка iframe захватит соответствующие детали, которые мне нужны с этой страницы.
Я написал код для этого внутри функции frameLoaded, и я устанавливаю это как событие onload, но сценарий все еще работает с ошибкой, где он не может найти .innerHTML элемента.
Если я загружаю iframe, а затем выполняю этот скрипт, он работает нормально, однако, если я попытаюсь загрузить iframe и выполнить скрипт вместе, он будет работать с этой ошибкой.
Вот код, я использую:
//Getting text currently in the textarea
var selectedTxt = document.getElementById('txtEmailText').value;
//Converting it to a string - this is just for troubleshooting purposes that I've used two variables
var insertText = selectedTxt.toString();
//Loads in the highlighted purchase number
var purchaseNumber = window.getSelection();
purchaseNumber = purchaseNumber.toString();
//Declares global variables to hold the title and number
var purchaseTitle;
var purchaseNumber;
//Function to execute code to grab title and number once the frame has loaded
function frameLoaded() {
var iframe = document.getElementById('purchaseIframe');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
purchaseTitle = innerDoc.getElementById('listingTitle');
purchaseNumber = innerDoc.getElementById('auctionSoldIdDisplay');
}
//Checks to see if a purchase number has been selected
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));
}
//Converting the value in the title to readable text
purchaseTitle = purchaseTitle.innerHTML;
//Placing the values in to the format I need
var purchaseDetails = purchaseTitle + " - " + purchaseNumber;
//Placing the values in to the string to go back in to the email textarea
insertText = insertText.replace("PURCHASEDETAILS", purchaseDetails);
//Pasting the variable in to the textarea
document.getElementById('txtEmailText').value = insertText;
Могу ли я сделать что-то здесь не так, или используя неправильные события, как мне кажется, что, возможно, он пытается захватить значения до IFrame полностью загружена, следовательно, ошибка, когда я генерирую iframe в одно и то же время.
Пожалуйста, обратите внимание, что я не могу использовать JQuery
Вы пробовали 'purchaseIframe.setAttribute ("OnLoad", "frameLoaded");' вместо 'purchaseIframe.setAttribute ("OnLoad", "frameLoaded();");'? –