我试图在点击时或在设置一些时间之后插入脚本(如下所示)并且它不会附加。但是,如果我删除了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);
答案 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秒后运行。