如何在异步脚本更改dom后执行js代码?

时间:2017-05-11 16:57:13

标签: javascript dom

我正在加载一个改变dom的异步脚本。如果我在脚本中添加function member_shortcode($atts, $content = "") { if ($content) { $content = do_shortcode("[{$content}]"); } ,我可以在加载脚本后运行代码。但是,dom仍然没有被脚本编辑。有没有办法等到dom编辑完成后再运行我的代码?

简单示例:

onload

2 个答案:

答案 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'));
        }
     });
  }