【问题标题】:How to remove default link in JS text/template如何删除 JS 文本/模板中的默认链接
【发布时间】:2014-04-16 23:22:09
【问题描述】:

任何人都可以帮助我如何删除或替换 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 属性并未完全显示正确的数据。我的 localhost/testserver 包含在 href 属性中。

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

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

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

【问题讨论】:

    标签: javascript php jquery backbone.js


    【解决方案1】:

    添加http://

    试试这个

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

    【讨论】:

      【解决方案2】:

      这里出了什么问题?

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

      如何解决?

      简而言之,要解决此问题,您需要在您的网址前添加http://(如果没有)。您可以通过多种方式做到这一点,例如:

      1. 按照 Nitish Kumar 的建议更新您的模板。
      2. 使用 jquery 将所有 url 替换为 http://
      3. ....或许多其他方式!!!

      如果您确定 URLs 将始终像您的示例一样,选项 1 或 2 很容易实现并且可以解决您的问题。但是对于以下用例会失败:

      1. 如果您的 url 已经有协议(即http://google.com)。那么你的网址就会变成http://http://google.com
      2. 如果您的 url 确实是相对 url(即my/relative/url)。然后它应该保持原样,但你会得到没有域的无效 url - http://my/relative/url

      终极解决方案!!

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

      //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

      编码愉快!!

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          您的问题措辞有点奇怪,您提供的示例还不足以在这一点上提出更多建议(尽管我会说我通常不鼓励像您一样在模板回显中进行三元运算)。

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-07-14
              • 2015-11-24
              • 2019-09-21
              • 2016-02-11
              • 1970-01-01
              • 1970-01-01
              • 2011-10-07
              • 1970-01-01
              相关资源
              最近更新 更多