附加脚本动态失败

时间:2015-05-13 01:46:25

标签: javascript jquery html

我试图在点击时或在设置一些时间之后插入脚本(如下所示)并且它不会附加。但是,如果我删除了setTimeout函数,它会附加。点击或任何其他事件也会发生同样的情况。有人可以告诉我为什么,以及我如何能够做到这一点?

 setTimeout(function(){
    var parent = $('#panel');                   
    var element = $('<div></div>');
    var script = document.createElement('script');
    script.setAttribute('type','math/tex');
    script.textContent = 'e^{\\pi i} + 1 = 0';
    element.append(script); 

    parent.append(element);
}, 1500);

1 个答案:

答案 0 :(得分:2)

编辑:如果你正在使用MathJax,你需要告诉MathJax在1.5秒后插入新的乳胶标签重新扫描页面,看看http://docs.mathjax.org/en/latest/typeset.html通常你可以得到只需运行Exception in thread Thread-1: Traceback (most recent call last): File "~snip~/threading.py", line 810, in __bootstrap_inner self.run() File "~snip~/threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) File "kill_thread.py", line 36, in serve_forever self.handle_request() File "~snip~/SocketServer.py", line 276, in handle_request fd_sets = _eintr_retry(select.select, [self], [], [], timeout) File "~snip~/SocketServer.py", line 155, in _eintr_retry return func(*args) error: (9, 'Bad file descriptor') 就可以了:

MathJax.Hub.Queue(["Typeset",MathJax.Hub]);

原始回答:它在我的jsfiddle中起作用:

https://jsfiddle.net/aLe0jL3y/

我怀疑你相信,一旦你附加了这个脚本标签,你的乳胶库就会自动检测到它已被插入并解析它或其他东西。

我不知道您使用哪个库用于latex,但我猜测您的代码在setTimeout之外工作,因为它在之前插入乳胶库扫描页面math / tex脚本标签,而当你使用1.5秒延迟时,库已经运行了,所以你的脚本标签被插入但你没有看到它,因为乳胶库已经运行到了这个时间点,所以它不会解析它。

我建议确保乳胶库使用 1.5秒后运行