Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.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为小部件编写iframe-最佳实践/限制? 我正在开发一种第三方小部件(HTML5/JS视频播放器),它被设计成无缝地嵌入第三方站点,它与Flash播放器一起工作(在本例中HTML5/JS播放器是一个后退)。_Javascript_Html_Iframe_Embed - Fatal编程技术网

使用javascript为小部件编写iframe-最佳实践/限制? 我正在开发一种第三方小部件(HTML5/JS视频播放器),它被设计成无缝地嵌入第三方站点,它与Flash播放器一起工作(在本例中HTML5/JS播放器是一个后退)。

使用javascript为小部件编写iframe-最佳实践/限制? 我正在开发一种第三方小部件(HTML5/JS视频播放器),它被设计成无缝地嵌入第三方站点,它与Flash播放器一起工作(在本例中HTML5/JS播放器是一个后退)。,javascript,html,iframe,embed,Javascript,Html,Iframe,Embed,为了允许通过单个网关进行外部嵌入,我们提供的嵌入代码大致如下所示: 请注意.php扩展名。该脚本所做的是执行一些基本的浏览器代理检测,主要基于“id”查询字符串运行一些后端逻辑,然后回显该文档的javascript。将实际嵌入的代码写入页面 如果是启用Flash的设备,document.write代码是直接的Flash嵌入代码(无iframe;直接到他们的页面);如果是iOS设备,它会编写,其src指向一个HTML文档,即HTML5/javascript播放器——在中有自己的.js,在主体中有

为了允许通过单个网关进行外部嵌入,我们提供的嵌入代码大致如下所示:

请注意.php扩展名。该脚本所做的是执行一些基本的浏览器代理检测,主要基于“id”查询字符串运行一些后端逻辑,然后回显该文档的javascript。将实际嵌入的代码写入页面

如果是启用Flash的设备,document.write代码是直接的
Flash嵌入代码(无iframe;直接到他们的页面);如果是iOS设备,它会编写
,其src指向一个HTML文档,即HTML5/javascript播放器——在
中有自己的.js,在主体中有一组
组成HTML5/js播放器,等等

我相信这件事可以做得更好。所以,我的问题是:

  • 可以或应该删除哪些步骤(如果有)

  • 一开始将HTML5/js版本放到iframe中,而不是直接将其写入页面,这是一个好主意吗?那么我们在
    中使用的所需的external.js呢?此外,在未来,我们可能需要与我们的站点进行双向通信(与iframe src相同的域),因此iframe提供了一个很好的方法来实现这一点,对吗

  • 如果在iframe中加载,是否有任何范围问题需要担心(例如,我们的播放器版本的jQuery与第三方父页面上的内容冲突)

  • 我可以/应该做些什么来确保正确的加载顺序,以便在脚本加载/执行时不会对第三方站点产生负面影响

  • 是否有比使用document.write将最终嵌入代码写入第三方页面(无论是Flash的
    代码还是HTML5/js的
    )更好/更智能的选择?我应该把这段代码写到原始js行中包含的一个div中,还是只写document.write到它所在的任何容器中都是安全的

  • 谢谢!Javascript的范围问题和异步行为从来都不是我的强项…

    5)是的。一般来说,使用
    document.write
    是一种不好的做法。它会延迟DOM加载,并阻止浏览器在加载完成之前执行任何其他操作

    相反,可以考虑选择包装器对象(使用
    getElementById
    或jQuery选择),并将其
    innerHTML
    (或jQuery
    html
    )属性设置为预组装的嵌入代码。

    2,3)如果使用iframe,则必须将单独的jQuery库加载到该iframe中。这可能是使用iframe(防止版本问题)的充分理由。在某些情况下,这样做的代价是不必要地下载jQuery两次

    5) 由于诺顿提到的原因,应始终避免编写
    文档。但是,允许用户在不需要调用任何JS的情况下嵌入它会很好。要考虑的一种方法是将元素放在脚本标记中。
    比如:
    

    然后,您的脚本可以挂接到DOMReady/onload事件中,并在不使用
    文档的情况下构建HTML

    // This should be called from an onload handler
    document.getElementById('<?= $_GET['nodeId']?>').innerHTML = myHtmlString;
    
    //这应该从onload处理程序调用
    document.getElementById(“”).innerHTML=myHtmlString;
    
    或者通过无聊的
    createElement
    appendChild
    调用