【问题标题】:How do I use an if statement with this script?如何在此脚本中使用 if 语句?
【发布时间】:2017-07-24 22:28:14
【问题描述】:

所以我写了一个脚本。它使用 URL 参数来确定要在网站上展示的广告。如下图所示,您可以看到发生了什么。如果 ?layout=layout1,2,3 附加到 URL,则存储变量。

// Parse the URL
function getURLParameter(name) {
  name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
  var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
  results = regex.exec(location.search);
  return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

islayout = getURLParameter('layout'); 

if (islayout == "layout1") {            
  localStorage.setItem("layoutvalue", 1);
}

if (islayout == "layout2") {            
  localStorage.setItem("layoutvalue", 2);
}

if (islayout == "layout3") {            
  localStorage.setItem("layoutvalue", 3);
} 
else {
  var layoutvalue = 0; 
}

在整个页面中进一步...然后,我将有一个代码,该代码将使用上面收到的变量来确定要执行哪些广告代码。

if (localStorage.getItem("layoutvalue") == 1){  
  // Ad Code for 1st set of users
}

if (localStorage.getItem("layoutvalue") == 2){  
  // Ad Code for 2nd Set of users
}
else {
  // Ad code for all users
}

所以这一切都很好,花花公子......我现在的问题是当我得到如下格式的广告代码时,如下所示。

 <script type="text/javascript" id="adblockid" 
 src="https://cdn.adnetwork.com/blahblah.min.js?w=12345&"></script>

如何使用 if 语句来控制此脚本何时执行?因为此脚本的代码不在脚本标签之间,而是在脚本标签之间。

告诉我。

谢谢。

【问题讨论】:

  • 更多条件和/或事件。
  • @phpglue 你是什么意思?对不起?
  • 为什么您的搜索 URL 看起来像这样?您希望运行代码的条件是什么?我没有测试getURLParameter(),但整个事情看起来像是一个糟糕的策略。你想做什么?
  • 从 URL 中获取参数(例如 website.com/?layout=layout1)并使用 url 参数来确定在网站上执行的广告。我唯一遇到的问题是尝试如何让底部脚本与 if 语句一起使用。

标签: javascript if-statement url-parameters


【解决方案1】:

您是否尝试将脚本附加到正文?

var s = document.createElement("script");
s.type = "text/javascript";
//Change Source depending on your ad values
s.src = "https://cdn.adnetwork.com/blahblah.min.js?w=12345&";
$("head").append(s);

【讨论】:

  • 你能解释一下吗?上面的代码是否可以直接输入到 if 语句中?
  • 如果我理解正确,您可以通过执行以下操作来实现您想要的: var s = document.createElement("script"); s.type = "文本/javascript"; if (localStorage.getItem("layoutvalue") == 1){ s.src = "cdn.adnetwork.com/blahblah.min.js?w=layout1value"; } if (localStorage.getItem("layoutvalue") == 2){ s.src = "cdn.adnetwork.com/blahblah.min.js?w=layout2value"; } 其他 { s.src = "cdn.adnetwork.com/blahblah.min.js?w=defaultvalue"; } $("head").append(s);
  • 感谢瑞奇的回复!那没有用。我需要将数据附加在打开的箭头括号内,而不是封闭的括号内。
  • 再来一张。您是否尝试过使用: $.getScript('cdn.adnetwork.com/blahblah.min.js?w=12345&');它将一个新脚本加载到页面中并运行其中的代码。
  • 嗨瑞奇。谢谢。实际上,我尝试了您发送的第一个脚本,当我将脚本放在身体而不是头部时,它就起作用了。我还替换了最后一行 "$("head").append(s);"用“document.head.appendChild(script);”非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 2019-03-08
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多