【问题标题】:Get DOM data with referring URL使用引用 URL 获取 DOM 数据
【发布时间】:2010-09-22 11:37:58
【问题描述】:

假设我们有一个结构如下的页面:

<li id="A">
<span class="some class">some content
<a href="http://www.example.com">http://www.example.com</a>
</span>
</li>

<li id="B">
<span class="some class">some content
<a href="http://www.example.com">http://www.example.com</a>
</span>
</li>

<li id="C">
<span class="some class">some content
<a href="http://www.example.com">http://www.example.com</a>
</span>
</li>

当一个人点击三个链接中的任何一个时,是否有可能使用 PHP 或 JS 获取列表 ID(A、B、C)并将其与引用 URL 一起附加?

  • 需要明确知道点击来自三个列表标签中的哪一个
  • 我没有原始页面的写入权限

【问题讨论】:

  • 也许我看错了,但这不是一个 JavaScript 问题,而不是 PHP 应该做的事情吗?
  • 很有可能,有JS解决这个问题吗?
  • 删除了我的帖子。读了两遍后,我同意salathe:这是你想在JavaScrap而不是PHP中做的事情。

标签: php javascript referrer


【解决方案1】:

更新

鉴于您透露您无法访问原始页面,因此您没有机会找到有关被点击到达您的页面的特定链接的任何信息。您可以通过document.referrer 获取推荐人。

后人的上一个答案

以下函数将捕获对具有指定 id 的容器元素内的任何链接的点击,并将包含容器元素的 id 和当前页面的 URL 的查询字符串添加到 URL:

function modifyLink(containerId) {
    var el = document.getElementById(containerId);
    el.onclick = function(evt) {
        evt = evt || window.event;
        var target = evt.target || evt.srcElement;
        if (target.tagName == "A") {
            window.location.href = target.href + "?id=" + encodeURIComponent(containerId) +
                "&referrer=" + encodeURIComponent(window.location.href);

            return false; // Cancel the default link behaviour
        }
    };
}

modifyLink("A");
modifyLink("B");
modifyLink("C");

【讨论】:

  • 是的,这确实回答了提出的问题。我没有承认我没有对原始页面的写入权限这一事实是我的错误。仅读取权限。我将无法在原始页面上包含任何 Javascript。还有可能吗?
  • @egfx:我想这意味着您是所链接网站的所有者,而不是包含您引用的代码的网站的所有者?这是如何回答问题的一个相当基本的观点!您可能应该修改问题以包含该信息。
  • @Spudley 是的,谢谢我已经包含了该信息。我在提出问题时忽略了这个事实。那是完全正确的。我拥有所链接的站点,但不拥有示例中包含的 HTML 结构的站点。
【解决方案2】:

我们已经确定(通过 cmets 在另一个答案上)提问者拥有被链接到的网站,而不是包含链接的网站。

因此,您无法对他引用的代码中的链接进行任何操作,这意味着无论是 Javascript 还是 PHP,甚至任何其他语言都无法为您提供帮助。

因此,显而易见的答案是否定的:作为 example.com 的所有者,您无法判断这三个链接中的哪一个是被点击到达您的网站的链接。如果链接在不同的页面上,您可以从推荐数据中分辨出来,但是对于同一页面上的链接,HTTP 根本不会向您提供该信息,因此您无法分辨。您只能判断链接是否指向不同的 URL(可能带有查询参数),但这需要修改链接,您不能自己修改链接。

关于我可以为您提供的唯一解决方案是老式的答案:联系包含链接的网站的所有者,并要求他修改它们以使其独一无二。

【讨论】:

  • 是的,嗯。考虑到该站点是 Twitter,联系他们以更改布局以适应我的小用例可能是一个障碍;)。感谢您的所有意见。我用已解决的代码将上述答案标记为已解决。
猜你喜欢
  • 2018-12-08
  • 2016-04-21
  • 2023-03-10
  • 2021-10-13
  • 2021-04-08
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
相关资源
最近更新 更多