我正在尝试创建类似于 twitter 允许网站嵌入推文的可嵌入内容。
例如,twitter 允许用户复制粘贴存根 blockquote 和 javascript,在运行 js 时,将 blockquote 替换为内容的 iframe。
我做过类似的事情(我正在使用 django)
<blockquote class="embedded">
<p>placeholder text</p>
</blockquote>
<script async src="{% static 'widgets.js' %}" charset="utf-8"></script>
然后,widgets.js 脚本对 django 视图方法进行 ajax 调用,该方法调用 render_to_string 并为 iframe 加载所需的 HTML。如果返回简单的 HTML,那么一切都会完美运行,因为它只需要类似的东西iframe.get()[0].contentWindow.document.write(content)
但这是我的问题。我要加载的 HTML 需要 DataTables,而 DataTables 应该在 $(document).ready() 中初始化一个表。因为这是 iframe 内容,所以永远不会调用 document.ready() (据我所知)。目前,我已经能够通过将我的 javascript 放在 HTML 的最末尾来初始化 DataTable,但不能保证完成该 init 调用后 html 会完全加载。
最终的问题是时机。我需要动态生成的 iframe 内容(通过 django 模板使用 ajax 加载)在加载到 iframe之前执行其 javascript。
有没有办法强制执行这个时间?