Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript动态嵌入对象_Javascript_Embed_Tableau Api - Fatal编程技术网

使用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

我试图在运行时使用javascript动态地将嵌入代码添加到HTML页面中,但是当我添加它时,没有显示任何内容

我要嵌入的对象是来自Tableau服务器的报告。如果我将代码直接放在HTML页面中,则会正确显示(您可以尝试在fiddle中取消对div静态容器的注释),但如果我使用javascript添加报告,则会失败:

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插入标记的更好解释: