使用javascript动态嵌入对象
我试图在运行时使用javascript动态地将嵌入代码添加到HTML页面中,但是当我添加它时,没有显示任何内容 我要嵌入的对象是来自Tableau服务器的报告。如果我将代码直接放在HTML页面中,则会正确显示(您可以尝试在fiddle中取消对div静态容器的注释),但如果我使用javascript添加报告,则会失败:使用javascript动态嵌入对象,javascript,embed,tableau-api,Javascript,Embed,Tableau Api,我试图在运行时使用javascript动态地将嵌入代码添加到HTML页面中,但是当我添加它时,没有显示任何内容 我要嵌入的对象是来自Tableau服务器的报告。如果我将代码直接放在HTML页面中,则会正确显示(您可以尝试在fiddle中取消对div静态容器的注释),但如果我使用javascript添加报告,则会失败: document.getElementById('dynamic-container').innerHTML ='<div class="tableau-report-vie
document.getElementById('dynamic-container').innerHTML ='<div class="tableau-report-viewer">' + decodeURIComponent(data[0].TableauCode.replace(/\+/g, '%20')) + '</div>';
document.getElementById('dynamic-container')。innerHTML=''+decodeURIComponent(数据[0]。TableauCode.replace(/\+/g,'%20'))+'';
运行上述脚本后,我可以看到代码已正确添加到DOM中
请注意,该函数是在ajax调用检索到数据对象(在示例中存储为js变量)后调用的。调用函数时,DOM将完全加载
以下是jsfiddle:当您使用更新div的innerHTML时,将不会加载tableau脚本,因为浏览器试图防止跨站点脚本攻击。您必须预加载脚本,然后代码才能工作(您可能还希望从json中删除脚本标记)。在您的示例中,它将如下所示:
<script type='text/javascript' src='https://analytics.wfp.org/javascripts/api/viz_v1.js'></script>
<h2>Hello world</h2>
<div id="dynamic-container"></div>
<hr/>
你好,世界
在安全注意事项部分下的以下链接中,您将找到关于为什么不能使用innerHTML插入标记的更好解释:
当您使用更新div的innerHTML时,将不会加载tableau脚本,因为浏览器试图防止跨站点脚本攻击。您必须预加载脚本,然后代码才能工作(您可能还希望从json中删除脚本标记)。在您的示例中,它将如下所示:
<script type='text/javascript' src='https://analytics.wfp.org/javascripts/api/viz_v1.js'></script>
<h2>Hello world</h2>
<div id="dynamic-container"></div>
<hr/>
你好,世界
在安全注意事项部分下的以下链接中,您将找到关于为什么不能使用innerHTML插入标记的更好解释: