是我的第三方JavaScript返回html还是只是一个空对象
Is my third party JavaScript returning html or just an empty object?
我需要用JavaScript(或jQuery)编写一个函数,检查第三方注入是否返回HTML或什么都不返回。
稍后,我将提供更多细节,但首先提供一些背景信息。
我有一个产品详细信息页面,需要显示产品信息。该产品信息由两个来源提供。格式更好的版本(包括链接、视频、花式盒子等)来自第三方。第二个来源是来自CMS的非格式化文本。
因此,我试图实现的是检查来自第三方的信息是否有html,如果有,则显示它。如果没有(或返回空),则显示CMS非格式化文本。
以下是我尝试过的:
function flixMediaCallBack(){
var productDescription = "${productModel.description}";
var productScript = '<div id="flix-minisite"></div> <div id="flix-inpage"></div> <script type="text/javascript" src="http://media.flixfacts.com/js/loader.js" data-flix-distributor="6156" data-flix-brand="LG Electronics" data-flix-language="en" data-flix-mpn="55EC930V" data-flix-ean="8806084731074" data-flix-sku="" data-flix-button="flix-minisite" data-flix-inpage="flix-inpage" data-flix-button-image="" data-flix-fallback-language="" data-flix-price="">';
if (productScript === null) {
return productDescription;
} else if (typeof(productScript) === "object") {
return productScript;
} else {
return productDescription;
}
};
$(document).ready(function() {
var render = flixMediaCallBack();
$('#productDetail_tab1')[0].innerHTML = render;
});
其中productScript是我无法控制的第三方脚本。
无论我尝试了什么,都无法显示HTML。我确实到达了让脚本出现在<div id="productDetail_tab1"></div>
中的阶段。
如有任何帮助,将不胜感激
好的,基本上你不能注入脚本标记并期望它的属性工作。。问题出在注入脚本的方式上。。
请将div
元素的注入和脚本的注入分开。。
你需要这样做。。
var fm = document.createElement('script');
fm.type = 'text/javascript';
fm.async = true;
fm.setAttribute("data-flix-distributor","6156");
fm.setAttribute("data-flix-language","us");
fm.setAttribute("data-flix-brand","LG Electronics");
fm.setAttribute("data-flix-mpn","55EC930V");
fm.setAttribute("data-flix-ean", "8806084731074");
fm.setAttribute("data-flix-sku","");
fm.setAttribute("data-flix-button","flix-minisite");
fm.setAttribute("data-flix-inpage","flix-inpage");
fm.setAttribute("data-flix-button-image","");
fm.setAttribute("data-flix-fallback-language","");
fm.setAttribute("data-flix-fallback-language","");
fm.src = '//media.flixfacts.com/js/loader.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(fm, s);
这是它应该工作的唯一方法。。
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Protractor:element.getText()返回一个对象,而不是String
- 如何使用jQuery添加另一个对象的高度作为边距
- 计算从一个对象到另一个对象的路径并沿其移动
- 如何将一个对象添加到每个对象数组中
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 将javascript对象(属性+值)合并到一个对象中
- 尝试简化检查对象键是否为true并将其推送到另一个对象
- 从 javascript 中的对象方法返回一个对象
- 响应应包含一个对象,但得到的却是GET操作的数组
- js:如何制作一个循环,将20个不同的东西添加到一个对象中
- 用javascript创建另一个对象的实例