剪切使用Javascript内部超链接获得的字符串

时间:2011-04-25 22:27:38

标签: javascript

我创建了一个用户可以添加的书签,并将其发送到我的网站捕获引荐来源。

<a href="javascript:location='http://www.chusmix.com/tests/?ref='+escape(location.href);" onclick="alert('Drag it, not click it!');return false;"> Bookmark </a>

我的问题是由于某种原因,location.href部分而不是打印http://它打印:“http%3A //”。我想删除它并获得domain.com

我有一个类似的代码可能有用,但我很难弄清楚如何在HTML中实现它。

// Function to clean url

    function cleanURL(url)
    {
        if(url.match(/http:\/\//))
        {
            url = url.substring(7);
        }
        if(url.match(/^www\./))
        {
            url = url.substring(4);
        }

        url = "www.chusmix.com/tests/?ref=www." + url;

        return url;
    }
    </script>

由于

2 个答案:

答案 0 :(得分:1)

在大多数浏览器中,引荐来源是作为HTTP协议的标准字段发送的。这在技术上不是你的问题的答案,但它是一个更清晰,更不显眼的解决方案来抓住服务器端的信息。

例如,在PHP中,您可以写:

$ref = $_SERVER['HTTP_REFERER'];

...然后将其存储在文本文件或数据库中或者有什么东西。我无法确定你的最终目的是什么,因为点击书签缺乏浏览的连续性,这需要推荐人信息(比如从搜索引擎或竞争对手的网站转移的方式)。它们可能来自零历史,来自您网站上的其他页面或完全不相关的内容。

答案 1 :(得分:0)

就像我在评论中已经说过的那样:

请注意这种书签可能会损害用户隐私,因此请相应地通知他们。

话虽如此:

首先,请使用encodeURIComponent()代替escape(),因为自ECMAScript-262 v3以来已弃用escape()

其次,要摆脱“http%3A //”使用location.href,请汇总location属性host,{{ 1}},pathnamesearch代替:

hash