Я просто использую:
setTimeout(function(){
//reference/manipulate DOM here
});
И в отличие от document.addEventListener("DOMContentLoaded" //etc
, как в самом верхнем ответе, он работает еще в IE9 - http://caniuse.com/# search = DOMContentLoaded указывает только на IE11.
Например, перейдите в https://netrenderer.com/index.php , выберите Internet Explorer 9 из в раскрывающемся списке введите https://dexygen.github.io/blog/oct-2017/jekyll/jekyll-categories/liquid-templates/2017/10/22/how-jekyll-builds-site-categories.html. и нажмите «Render», и вы увидите что-то похожее на скриншот внизу этого сообщения.
См. следующий код Javascript, который я использую в заголовке, чтобы манипулировать стилем Jekyll «хакер» по своему вкусу - в частности, вы можете ссылаться на блок if (location.pathname !== rootPath)
, чтобы увидеть, как я вставляю ссылки Home
и Blog Home
, которые отображаются IE9 на сайт NetRenderer.
Интересно, что я наткнулся на это решение setTimeout
в 2009 году: Проверяет готовность переполнения DOM? , который, вероятно, мог быть сформулирован немного лучше, как я подразумевал под используя более сложные подходы к различным схемам.
setTimeout(function() {//delay execution until after dom is parsed
var containerEls = document.getElementsByClassName('container');
var headingEl = containerEls[0].getElementsByTagName('h1')[0];
var headerEl = document.getElementsByTagName('header')[0];
var downloadsSectionEl = document.getElementById('downloads');
var rootPath = "/";
var blogRootPath = "/blog/";
containerEls[0].style.maxWidth = '800px';
containerEls[1].style.maxWidth = '800px';
headingEl.style.margin = '0';
headerEl.style.marginBottom = '7px';
downloadsSectionEl.style.margin = '0';
if (location.pathname !== rootPath) {
downloadsSectionEl.appendChild(generateNavLink('Home', rootPath));
if (location.pathname !== blogRootPath) {
downloadsSectionEl.appendChild(document.createTextNode(' | '));
downloadsSectionEl.appendChild(generateNavLink('Blog Home', blogRootPath));
}
}
function generateNavLink(linkText, hrefPath) {
var navLink = document.createElement('a');
var linkTextNode = document.createTextNode(linkText);
navLink.setAttribute('href', hrefPath);
navLink.appendChild(linkTextNode);
return navLink;
}
});
Вы наблюдали за Ryan Bates, превосходным Railscast на Аутентификации OpenID?
Я могу порекомендовать AuthLogic для OpenID:
http://www.binarylogic.com/2008/11/21/tutorial-using-openid-with-authlogic/
Обратите внимание на это:
http://github.com/shripadk/authlogic_openid_selector_example
Полное приложение, использующее authlogic-openid с селектором jquery и автоматической регистрацией. Ура :)