是我的第三方JavaScript返回html还是只是一个空对象

Is my third party JavaScript returning html or just an empty object?

本文关键字:一个 对象 第三方 我的 JavaScript 返回 html      更新时间:2023-09-26

我需要用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);  

这是它应该工作的唯一方法。。