使用djangoajax创建iframe内容,并将\u呈现为\u字符串
我正在尝试创建类似于twitter允许网站嵌入推文的可嵌入内容 例如,twitter允许用户复制粘贴存根blockquote和javascript,在运行js时,将blockquote替换为内容的iframe 我也做过类似的事情(我正在使用django)使用djangoajax创建iframe内容,并将\u呈现为\u字符串,ajax,django,iframe,dynamic,render-to-string,Ajax,Django,Iframe,Dynamic,Render To String,我正在尝试创建类似于twitter允许网站嵌入推文的可嵌入内容 例如,twitter允许用户复制粘贴存根blockquote和javascript,在运行js时,将blockquote替换为内容的iframe 我也做过类似的事情(我正在使用django) 占位符文本 js脚本然后对django视图方法进行ajax调用,该方法调用render_to_string并为iframe加载所需的HTML。如果返回简单的HTML,那么一切都能正常工作,因为它只需要类似于iframe.get()[0].c
占位符文本
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,但无法保证在初始化调用完成时HTML会被完全加载
归根结底,问题在于时机。我需要动态生成的iframe内容(通过django模板用ajax加载)在加载到iframe之前执行其javascript
有没有办法强制执行此计时?为什么不将iframe src设置为视图的url?然后您将拥有一个完整的请求生命周期。您可以显示一个加载程序,直到数据表运行完它的
init()
。您还可以在主视图中调用iframe的视图url,并获取结果html,然后将其传递到上下文。我试图避免使用src属性,因为创建的页面是通过ajax POST调用完成的。换句话说,添加到iframe的html本身并不是一个页面。也许我想把事情复杂化,因为我看到youtube的嵌入链接使用了iframe的src attr,而twitter则没有。
<blockquote class="embedded">
<p>placeholder text</p>
</blockquote>
<script async src="{% static 'widgets.js' %}" charset="utf-8"></script>