仅使用JavaScript获取其他网站元素的内容

时间:2014-04-11 21:01:56

标签: javascript jquery html ajax greasemonkey

我正在制作一个需要找到与另一个单词相关的单词的用户脚本。我找到a site,我可以转到http://semantic-link.com/#/stack,并且会有一个与stack相关的字词列表,其格式为:

<!-- various stuffs here, e.g. <head>, a <div>, another <div>, start of <body> -->

    <div id="word0" class="word" onclick="updateTitle("stacks");" style="opacity: 1;">
        stacks
    </div>
    <div id="word1" class="word" onclick="updateTitle("flue");" style="opacity: 1;">
        flue
    </div>
    <div id="word2" class="word" onclick="updateTitle("popped");" style="opacity: 1;">
        popped
    </div>
    <div id="word3" class="word" onclick="updateTitle("overflow");" style="opacity: 1;">
        overflow
    </div>

在这种情况下,我想从该页面获取字符串stacks。我发现的所有解决方案都不起作用,因为它们:

有没有什么方法可以只使用JavaScript将#word0元素的内容作为字符串获取?或者,是否有其他方法可以找到与另一个单词相关的单词?

4 个答案:

答案 0 :(得分:6)

您在问题中说明:

  

$.ajax()$.get()$('something').load() ...仅限于在其中执行的域。

这似乎指向了jQuery。实际上,限制是在浏览器本身使用Javascript,并且归结为一个名为Same Origin Policy的特定安全方面:

  

该策略允许在源自同一站点的页面上运行的脚本(方案,主机名和端口号的组合)在没有特定限制的情况下访问彼此的DOM,但阻止访问不同站点上的DOM < / p>

从本质上讲,除非远程服务器启用CORS以允许服务器的查询调用它,否则您无法尝试执行的操作。由于您无法控制远程服务器,我怀疑这是否已设置。

答案 1 :(得分:4)

由于同源策略,仅使用javascript是不可能的。必须有一些服务器端干预来检索html,无论是通过第三方服务(如YQL)还是您自己的php(或其他)脚本。

答案 2 :(得分:2)

为什么不获得他正在获得的JSON?如果我错了,请纠正我,但你只是在相关的词之后,而不是用户点击的内容?

$.get("http://semantic-link.com/related.php?word="+word);

编辑:试试这个:

$.getJSON("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%3D'http%3A%2F%2Fsemantic-link.com%2Frelated.php%3Fword%3Dword'&format=json&diagnostics=true&callback=",function(data){
alert(data.query.results.json.json[0].v);
});

答案 3 :(得分:1)

我认为你想要的是非常可行而且很容易实现。

首先,您必须注意,当您在该网站中查询任何单词时,它将在幕后进行“ajax”调用,例如:http://semantic-link.com/related.php?word=shrewd。意识到这个URL就是诀窍。

请注意,它会为您带来JSON格式作为响应。所以你现在需要做的就是解析它。只需将上面示例中的URL中的单词替换为您要使用的单词,即可完成。 ;)