我正在加载一个改变dom的异步脚本。如果我在脚本中添加function member_shortcode($atts, $content = "") {
if ($content) {
$content = do_shortcode("[{$content}]");
}
,我可以在加载脚本后运行代码。但是,dom仍然没有被脚本编辑。有没有办法等到dom编辑完成后再运行我的代码?
简单示例:
onload
答案 0 :(得分:1)
问题在于您是立即致电onLoad()
。删除()
以引用函数onLoad
,而不是调用函数。
<div id="asdf">asdf</div>
<script>
function onLoad() {
// this logs null, but it should return a div
console.log('loaded', document.getElementById('asdf'));
}
var s = document.createElement("script");
s.type = "text/javascript";
s.onload = onLoad;
s.src = "data:text/javascript,console.log('script src')";
document.head.insertAdjacentElement('beforeend', s);
</script>
答案 1 :(得分:0)
尝试添加addEventListener
以等待元素加载,然后让它运行脚本。
function onLoad() {
document.addEventListener("load",function(e){
if(e.target.id == 'asdf'){
console.log('loaded', document.getElementById('asdf'));
}
});
}