【问题标题】:Straight Reload/Refresh of DIV Contents on Window Resize Using在窗口调整大小时直接重新加载/刷新 DIV 内容
【发布时间】:2016-01-28 04:56:51
【问题描述】:

我正在将 Amazon Affiliate 横幅添加到我的网站,但由于横幅代码没有响应性,因此较大尺寸的横幅会从我的容器中以较小的尺寸出现。我创建了以下代码,以便在页面最初加载时,它将在正确的空间中加载适当大小的横幅。但是,我想设置它,以便在调整浏览器窗口大小时,刷新包含横幅代码(bannerdiv)的DIV并重新执行脚本。

我是这方面的新手,因此将不胜感激您的耐心和白痴简单的指导。我也确信这段代码是以一种非常笨拙的方式编写的。 注意:我已根据 cmets 中的建议更新了代码,但仍然无法正常工作。有什么建议吗?

<script type='text/javascript'>
function loadBanners() {
function lrgBanner() {
 amzn_assoc_ad_type = 'banner';
 amzn_assoc_tracking_id = 'livcouintheci-20';
 amzn_assoc_marketplace = 'amazon';
 amzn_assoc_region = 'US';
 amzn_assoc_placement = 'assoc_banner_placement_default';
 amzn_assoc_linkid = 'AC2XN3SJ34RJMGYK';
 amzn_assoc_campaigns = 'outdoorrecreation';
 amzn_assoc_p = '48';
 amzn_assoc_banner_type = 'category';
 amzn_assoc_isresponsive = 'false';
 amzn_assoc_banner_id = '1XTRE8BRWXGWQJTWPJ82';
 amzn_assoc_width = '728';
 amzn_assoc_height = '90';
}
function medBanner() {
 amzn_assoc_ad_type = 'banner';
 amzn_assoc_tracking_id = 'livcouintheci-20';
 amzn_assoc_marketplace = 'amazon';
 amzn_assoc_region = 'US';
 amzn_assoc_placement = 'assoc_banner_placement_default';
 amzn_assoc_linkid = 'OTLU2UB6UY5JMUHP';
 amzn_assoc_campaigns = 'outdoorrecreation';
 amzn_assoc_p = '26';
 amzn_assoc_banner_type = 'category';
 amzn_assoc_isresponsive = 'false';
 amzn_assoc_banner_id = '0CDY3FGJ2PD68NJXFKG2';
 amzn_assoc_width = '468';
 amzn_assoc_height = '60';
}
function smlBanner() {
 amzn_assoc_ad_type = 'banner';
 amzn_assoc_tracking_id = 'livcouintheci-20';
 amzn_assoc_marketplace = 'amazon';
 amzn_assoc_region = 'US';
 amzn_assoc_placement = 'assoc_banner_placement_default';
 amzn_assoc_linkid = 'G7YQZ5D43772NXLC';
 amzn_assoc_campaigns = 'outdoorrecreation';
 amzn_assoc_p = '42';
 amzn_assoc_banner_type = 'category';
 amzn_assoc_isresponsive = 'false';
 amzn_assoc_banner_id = '1VHGPZ2J9GDJGYKD5G82';
 amzn_assoc_width = '234';
 amzn_assoc_height = '60';
}
    var winwidth = window.innerWidth;
    if (winwidth >= 1200) {
        lrgBanner();
    } else if (winwidth < 980 && winwidth >= 920) {
        lrgBanner();
    } else if (winwidth >=980 && winwidth < 1200) {
        medBanner();
    } else if (winwidth >= 600 && winwidth < 920) {
        medBanner();
    } else {
        smlBanner();
    }
}
loadBanners();
</script>

<div id="bannerdiv">
    <script id="bannerscript" src='//z-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&Operation=GetScript&ID=OneJS&WS=1'></script>
</div>

<script type="text/javascript">
function amznScript() {
    var banDiv = document.getElementById('bannerdiv');
    var oldScript = document.getElementById('bannerscript');
    var newScript = document.createElement('script')
    newScript.type = 'text/javascript';
    newScript.src = '//z-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&Operation=GetScript&ID=OneJS&WS=1';
    newScript.id = 'bannerscript'
    banDiv.replaceChild(newScript,oldScript);
}
</script>

<script type="text/javascript">
function adBanner() {
    loadBanners();
    amznScript();
}
window.addEventListener("resize", adBanner);
</script>

【问题讨论】:

  • 将您的内容包装在一个函数中,并在 resize 上调用相同的函数
  • 您还需要在更新配置全局变量后重新添加亚马逊脚本标签。
  • 如果您能够提供您推荐的实际代码更新,我将非常感谢您的帮助。
  • 根据您的建议更新了上面的代码,但它似乎不起作用。还有什么选择?
  • 是的,您肯定需要按照@dandavis 的建议动态重新添加亚马逊代码。

标签: javascript html resize reload


【解决方案1】:

在此处找到与亚马逊横幅相关的内容: Amazon Associates Site

【讨论】:

  • 响应式横幅不适用于我需要显示的类别。我正在编写此代码以使用我的横幅单元创建虚假响应。
【解决方案2】:

我没有使用此特定库的经验,但我会分享一些仅查看您的代码的想法:

  • 文档是否说数字变量设置需要是字符串或数字? (amzn_assoc_widthamzn_assoc_height 等)。通常,数字应不带引号(amzn_assoc_width = 234 而不是 amzn_assoc_width = '234'
  • lrgBannermedBannersmlBanner 函数取出loadBanners 函数。您在其中定义了它们。 loadBanners 在外面可以很好地使用它们。
  • 因为您是在函数内部定义变量,所以它们可能没有设置在 Amazon 脚本可以看到它们的位置(全局空间)。在您的浏览器中,页面加载后,打开浏览器控制台并在控制台中输入任何变量的名称,它将输出变量设置的任何内容。如果它输出undefined,要么你在控制台做错了,要么变量没有在全局空间中设置。此外,请尝试在控制台中输入 window.variableName 进行仔细检查。
  • 与上一个项目符号相关,尝试在函数中的所有变量定义前加上 window. 前缀,以将它们显式设置在全局空间中,亚马逊脚本可能希望在全局空间中找到它们。

【讨论】:

    【解决方案3】:

    如果您的类别不能使用响应式横幅,请尝试使用 iframe 横幅动态加载横幅。这是一个使用 jQuery 的示例

    <head>
    <script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
    <script language="javascript">
    $(window).on('load resize', function() {
        winWidth = $(window).width();
        if ( winWidth >= 1200) {
            $('#myBanner').attr({'src':'http://rcm-na.amazon-adsystem.com/e/cm?t=codedemo-20&o=1&p=48&l=ur1&category=home&banner=1T8X6QB60F8G26A33RG2&f=ifr&linkID=WHAOQICV37C7EWOX','width':'728','height':'90'})
        } else if (winWidth >= 600 && winWidth < 1200) {
            $('#myBanner').attr({'src':'http://rcm-na.amazon-adsystem.com/e/cm?t=codedemo-20&o=1&p=26&l=ur1&category=home&banner=017THAMGVS89AQ891982&f=ifr&linkID=5ORSSCSEHTUJ6JZS','width':'468','height':'60'})
        } else {
            $('#myBanner').attr({'src':'http://rcm-na.amazon-adsystem.com/e/cm?t=codedemo-20&o=1&p=42&l=ur1&category=home&banner=1VCFP7EH9H4CBCD6ADR2&f=ifr&linkID=IHZPNRGMTYWEIYAS','width':'234','height':'60'})
        }
    });
    </script>
    </head>
    
    <body>
    <iframe id="myBanner" scrolling="no" border="0" marginwidth="0" style="border:none;" frameborder="0"></iframe>
    </body>
    

    使用空白 iframe 进行初始加载有助于防止横幅在页面加载时发生变化。

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2014-03-14
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      相关资源
      最近更新 更多