2016-02-03 2 views
0

Я пытаюсь получить ссылку на объект DOM, созданный qUnit, без везения. Он отлично работает с «домашним» элементом DOM. Я проиллюстрировал проблему test site. Включите Firebug или другое окно регистрации при посещении сайта.document.getElementById не удается найти элементы qUnit DOM

Это код сайта:

window.onload = function() { 
 

 
\t var qunitTestrunnerToolbar_element = document.getElementById("qunit-testrunner-toolbar"); 
 
\t console.log("qunitTestrunnerToolbar_element: ", qunitTestrunnerToolbar_element); 
 

 
\t var test_element = document.getElementById("test_element"); 
 
\t console.log("test_element: ", test_element); 
 
};
<!doctype html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>Testing 'require' error</title> 
 
</head> 
 
<body> 
 
    <p>See console for output</p> 
 
    <script src="index.js"></script> 
 
    <script src="http://code.jquery.com/jquery-2.2.0.js"></script> 
 
    <p id="test_element">Test element</p> 
 
</body> 
 
</html>

ответ

1

Он не будет работать, как этот

Я не говорю о qunit но document.getElementById("qunit-testrunner-toolbar"); возвратит нуль, потому что в этом html нет элемента.

Если вы особенно с вопросом, как получить фактический идентификатор и не null

Вы можете, добавить свой исходный файл сценария в этом HTML, а затем var qunitTestrunnerToolbar_element = document.getElementById("qunit-testrunner-toolbar"); будет console его в indexjsили, если вы можете включают в тестовой HTML вы можете сделать

<iframe src="urlWithinYourDomain.html" style="display:none" id="iframeId"></iframe> и в indexjs

var qunitTestrunnerToolbar_element = document.getElementById('iframeId').contentWindow.document.getElementById('qunit-testrunner-toolbar'); если хотите html way.

+0

Вы правы, что элемент DOM никогда не материализуется в примере с игрушкой, который я дал в моем вопросе. В своем стремлении изолировать проблему я также потерял ошибку:/ В моем реальном коде элемент DOM на самом деле * сделал * материализуется. Я просто понял, что должен иметь дело с вопросом времени. Если я буду использовать window.setTimeout, чтобы направить мой запрос на две секунды в будущее, я становлюсь счастливым владельцем ссылки на элемент DOM 'qunit-testrunner-toolbar' :) Теперь я задаюсь вопросом, как бы я сделал это в более прекрасный способ. Как узнать, когда элементы qUnit DOM готовы? Но это будет по другому вопросу. – loldrup

Смежные вопросы