如何删除JS文本/模板中的默认链接

时间:2014-04-16 23:22:10

标签: javascript php jquery backbone.js

任何人都可以帮我解决如何删除或替换JS模板中的现有链接。我使用backbone.js。

这是我的代码:

<script id="option-show-template" type="text/template">
<address>
   <abbr title="Website">Web :</abbr> <%= (website)? '<a href="'+ website +'" id="website">' + website + '</a>' : ''  %></address>
</script>

输出:

Web: www.test.com

问题是即使它会输出正确的数据,但href attr并不完全显示正确的数据。我的localhost / testserver包含在href attrib。

Web: <a href="localhost/testserver/www.test.com">www.test.com</a>

我想要的是删除默认的基本网址。必须像这样输出:

Web: <a href="www.test.com">www.test.com</a>

5 个答案:

答案 0 :(得分:8)

添加http://

试试这个

 <abbr title="Website">Web :</abbr> <%= (website)? '<a href="http://'+ website +'" id="website">' + website + '</a>' : ''  %></address>

答案 1 :(得分:7)

这里有什么问题?

实施的问题是,当您设置href属性而没有任何协议(http,https,ftp等)时,浏览器会将链接视为相对路径。因此,当您在http://localhost/testserver/上查看该页面时,您网页的网址将变为localhost/testserver/www.test.com

如何解决?

简而言之,要解决此问题,您需要在网址前添加http://(如果没有)。您可以通过多种方式完成此操作,例如:

  1. 将您的模板更新为 Nitish Kumar 建议。
  2. 使用jquery
  3. 将所有网址前置替换为http://
  4. ....或许多其他方式!!!
  5. 选项1或2很容易实现并可以解决您的问题,如果您确定URLs将始终像您的示例。但是对于以下用例会失败:

    1. 如果您的网址已经有了协议(即http://google.com)。然后,您的网址将变为http://http://google.com
    2. 如果您的网址确实是相对网址(即my/relative/url)。然后它应保持不变,但如果没有域名,您将收到无效的网址 - http://my/relative/url
    3. 终极解决方案!!

      因此,您可以使用以下功能来修复您的网址

      //Check if it is a valid URL with FQDN
      function isValidUrl(url) {
          return url.match(/((ftp|http|https):\/\/)?[\w\-]+\.[\w\-]+/);
      }
      
      //Check if the url already contain a protocol or not
      function hasProtocol(url){
          return url.match(/(ftp|http|https):\/\//);
      }
      
      //Fix your URL only if needed!!
      function setHttp(link) {
          return (!isValidUrl(link) || hasProtocol(link)) ? link : 'http://' + link;
      }
      

      您可以通过多种方式使用此功能来解决问题。您可以找到here

      的示例实现

      快乐的编码!!

答案 2 :(得分:2)

如果使用绝对路径,则href必须以协议开头。如果没有协议,浏览器会将其解释为相对路径,导致您获得类似localhost/testserver/www.test.com的内容。

我相信唯一真正的解决方案就是将协议添加到你的href。

答案 3 :(得分:1)

您是否正在复制网址? www.test.com不是有效的完全限定网址。您需要将http://添加到您的网址中。唯一可能进入事物的方式是“网站”变量包含这些信息,我不能从你的问题中得到这些信息。

你的问题有点奇怪,你提供的例子还不足以在这一点上提出更多建议(虽然我会说我一般不鼓励模板回声中的三元操作,就像你已经得到的那样)。

答案 4 :(得分:0)

用http://替换前缀。这应该可以解决您的问题