首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >广告页面优化?

广告页面优化?
EN

Code Review用户
提问于 2013-12-24 00:19:37
回答 1查看 122关注 0票数 4

任何关于如何缩短这一点的建议都将不胜感激。此代码通过URL接受三个参数,并显示带有目标广告的页面。在如何减少用空格替换%20的三个部分方面,我特别需要帮助。另外,下面是带有示例参数的URL - http://timtechsoftware.com/ad.html?file_url=URL?file_name=FILE?keyword=KEY

这是ad.html的代码:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
<title>Download File</title>

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-41582851-1', 'timtechsoftware.com');
  ga('send', 'pageview');
</script>

</head>
<body><div align="center">

<script type="text/javascript"><!--
google_ad_client = "ca-pub-1582371570610820";
/* Page Link Medium */
google_ad_slot = "3981698399";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

  <script>
    function getParam(paramName){                //Look for parameters
  var prmstr = window.location.search.substr(1);
  var prmarr = prmstr.split ("?");
  var params = {};

  for ( var i = 0; i < prmarr.length; i++) {
     var tmparr = prmarr[i].split("=");
     params[tmparr[0]] = tmparr[1];
  }
  return params[paramName];                      //Return the requested parameter
}

var keyword = getParam('keyword');
var intIndexOfMatch = keyword.indexOf( "%20" );
while (intIndexOfMatch != -1){               // Loop over the string value replacing out each matching substring.
keyword = keyword.replace( "%20", " " )      // Relace out the current instance.
intIndexOfMatch = keyword.indexOf( "%20" );} // Get the index of any next matching substring.

var file_name = getParam('file_name');
var intIndexOfMatch = file_name.indexOf( "%20" );
while (intIndexOfMatch != -1){                 // Loop over the string value replacing out each matching substring.
file_name = file_name.replace( "%20", " " )    // Relace out the current instance.
intIndexOfMatch = file_name.indexOf( "%20" );} // Get the index of any next matching substring.

var file_url = getParam('file_url');
var intIndexOfMatch = file_url.indexOf( "%20" );
while (intIndexOfMatch != -1){                // Loop over the string value replacing out each matching substring.
file_url = file_url.replace( "%20", " " )     // Relace out the current instance.
intIndexOfMatch = file_url.indexOf( "%20" );} // Get the index of any next matching substring.

    document.write('<p style="text-align: center;"><a href="' + file_url + '">Download ' + file_name + '</a>' + 
'<br/><br/>Tagged: ' + keyword + '</p>'); //Write the page
  </script>
  <script type="text/javascript"><!--
google_ad_client = "ca-pub-1582371570610820";
/* Rectangle Large */
google_ad_slot = "9662168393";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
</body>  
</html>
EN

回答 1

Code Review用户

发布于 2013-12-24 02:19:49

您的getParam代码有一个错误,可能无法工作。

代码语言:javascript
运行
复制
function getParam(paramName){                //Look for parameters
  var prmstr = window.location.search.substr(1);
  var prmarr = prmstr.split ("?"); //This has to be ampersand!!
  var params = {};

  for ( var i = 0; i < prmarr.length; i++) {
     var tmparr = prmarr[i].split("=");
     params[tmparr[0]] = tmparr[1];
  }
  return params[paramName];                      //Return the requested parameter
}

如果跳过几个中间步骤和一些不必要的步骤,此函数可能会更短:

  • 不需要为对象分配任何东西,因此需要创建该对象。
  • 您只需要拆分prmstr,就不需要将其放入var中。
  • 您可以提前从for循环返回。

这会给你更多的感觉

代码语言:javascript
运行
复制
//Look for parameters
function getParam( s )
{                
  var a = window.location.search.substr(1).split("&"), i = a.length, pair;
  while(i--)
  {
    pair = a[i].split("=");
    if( pair[0] == s )
      return pair[1];
  }
}

或者,更高

代码语言:javascript
运行
复制
function getParam( s )
{                
  return location.search.substr(1).split(s+"=")[1].split("&")[0]
}

然后,有人明显地复制粘贴了3倍的同一段代码,并做了一些小的改变。您应该有一个泛型函数,称为3 time。或者,认识到这段代码是unescape的一个糟糕的替代品,只需称之为它。替换错误的原因是,除了%20之外,还有更多的字符。

代码语言:javascript
运行
复制
var keyword = unescape( getParam( 'keyword' ) ),
    file_name = unescape( getParam( 'file_name' ) ), 
    file_url = unescape( getParam( 'file_url' ) );

此外,还分配了两次google_ad_client = "ca-pub-1582371570610820";google_ad_slot = "9662168393";

请注意,document.write,我已经从可靠的消息来源,应该使用时,站在一个保护性召唤圈,以免更大的恶魔吞噬你。相反,您应该在HTML中使用链接标记,然后在js中找到链接,然后填充锚和标题。

最后,这不是很好的代码,我希望下载文件的服务器端代码质量更高,不会允许路径操作或路径遍历。

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/38002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档