【问题标题】:URL not working due to hashtag ('#') special character present由于存在井号 ('#') 特殊字符,URL 无法正常工作
【发布时间】:2015-05-23 20:51:27
【问题描述】:

我正在尝试实现“在 Facebook 上分享”功能。这是我的代码:

HTML

<a class="btn btn-social-icon btn-facebook" title="Share this on Facebook"
                           href="http://www.facebook.com/sharer.php?u={{currentUrl}}"
                           onclick="openPopupWindow(this.href); return false;">
                            <i class="fa fa-facebook"></i>
</a>

JavaScript

function openPopupWindow(url) {
window.open(url,'targetWindow',
    'toolbar=no, location=no, status=no, menubar=no, scrollbars=yes, resizable=yes, 
width=640, height=480');
}

AngularJS

$scope.currentUrl = document.URL;

我正在使用 ui-sref 在状态之间导航,因此,在我的浏览器中显示的每个 URL 都将如下所示:

http:// hostName:port/#/stateName

该标签破坏了我尝试实现的功能,这意味着它将尝试在 Facebook 上找到名为 stateName 的页面。我试图分享的结果链接变为http:// www.facebook.com/stateName 而不是http:// hostName:port/#/stateName.

我的问题是:

是否可以在不去掉 URL 中的 # 的情况下解决这个问题?

谢谢

【问题讨论】:

    标签: javascript php html angularjs url


    【解决方案1】:

    您可以使用%23 对 URL 中的哈希进行编码

    http:// hostName:port/%23/stateName
    

    变成

    http:// hostName:port/#/stateName
    

    其他编码值可以查here

    【讨论】:

      【解决方案2】:

      你不能只手动构建 URL 或对其进行编码吗?

      $scope.currentUrl = encodeURIComponent(document.URL);
      

      【讨论】:

      • 可能比公认的解决方案更具前瞻性……因为您最终可能会在路上“逃脱”其他物品。但是,嘿,不管对你有用!
      猜你喜欢
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多