另一个 website/cross 域上元素的 Xpath

Xpath of element on another website/cross domain

我想获取网站(我自己的域)上某个元素的 XPATH,我使用 JavaScript 代码获取了它,如 this 答案中所述。

现在我想要点击的按钮将打开一个 url(跨域)window,当用户点击那个 window 上的一个元素时,它是 XPATH 被捕获。

我尝试使用 iframe 做同样的事情,但没有成功。

现在我的问题是有没有办法得到 another website/ Cross domain 的元素的 XPATH ?

您可以使用 jQuery 的 load 函数获取数据,并将其附加到您的页面。

从那里,您的外部页面的 DOM 个节点应该可以访问以供您处理。

$('#where-you-want').load('//example.com body', function() {
    console.log($('#where-you-want'))

    // process the DOM node under `#where-you-want` here with XPath.
})

您可以在此处查看实际效果:http://jsfiddle.net/xsvkdugo/

P.S.: 这假定您正在使用启用了 CORS 的站点。

根据你的评论,我了解到你想从另一个没有 Access-Control-Allow-Origin header 包含你的域的网站获取信息(例如,另一个网站没有CORS enabled). This is not possible to do cross-domain and client-side due to the Same-Origin Policy 在大多数现代浏览器中实施。Same-Origin 策略会阻止您站点上的任何资源与任何其他站点上的资源交互(除非其他站点使用 Access-Control-Allow-Origin HTTP header).

如果您想从您的站点获取有关另一个站点的信息,则无法使用 server-side 代码。一个简单的解决方案是实施 server-side 代理,从您自己的来源 re-serves off-site 页面,因此不会违反 Same-Origin 政策。

抱歉,如果没有其他(x 域)站点的合作,这是不可能的。出于安全原因,浏览器不允许访问 DOM 的 x 域文档(包括 iframe)。

如果您与其他站点合作,他们可以加载您的 javascript 文件,然后使用 postmessage 将 xpath 传递到原始页面。

其他选项是创建用户可以在其他页面上使用的小书签,或浏览器扩展(Chrome 和 FF 很容易开发)...取决于您的用例。