Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取另一个站点的内容';仅使用JavaScript的s元素_Javascript_Jquery_Html_Ajax_Greasemonkey - Fatal编程技术网

获取另一个站点的内容';仅使用JavaScript的s元素

获取另一个站点的内容';仅使用JavaScript的s元素,javascript,jquery,html,ajax,greasemonkey,Javascript,Jquery,Html,Ajax,Greasemonkey,我正在制作一个需要查找与另一个单词相关的单词的用户脚本。我找到了我可以去的地方,那里将有一个与stack相关的单词列表,格式如下: <!-- various stuffs here, e.g. <head>, a <div>, another <div>, start of <body> --> <div id="word0" class="word" onclick="updateTitle("stacks");" s

我正在制作一个需要查找与另一个单词相关的单词的用户脚本。我找到了我可以去的地方,那里将有一个与
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
。我发现的所有解决方案都不起作用,因为它们:

  • 需要一个自定义页面
  • 使用PHP,或
  • 使用,或仅限于在其中执行的域

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

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

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

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

这似乎将矛头指向了jQuery。实际上,浏览器本身的Javascript存在限制,这取决于一个特定的安全方面,称为:

该策略允许在源于同一站点的页面(方案、主机名和端口号的组合)上运行的脚本访问彼此的DOM,而不受特定限制,但阻止在不同站点上访问DOM


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

您在问题中指出:

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

这似乎将矛头指向了jQuery。实际上,浏览器本身的Javascript存在限制,这取决于一个特定的安全方面,称为:

该策略允许在源于同一站点的页面(方案、主机名和端口号的组合)上运行的脚本访问彼此的DOM,而不受特定限制,但阻止在不同站点上访问DOM


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

为什么不直接获取他正在获取的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);
});

为什么不直接得到他得到的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);
});

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

首先,您必须注意,当您在该网站中查询任何单词时,它会在幕后进行“ajax”调用,例如:。知道这个URL就是诀窍


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

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

首先,您必须注意,当您在该网站中查询任何单词时,它会在幕后进行“ajax”调用,例如:。知道这个URL就是诀窍


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

如果你使用iframe,我想你可以。scriptlet/bookmarklet怎么样?你打算用这些结果做什么?非常确定这样做违反了跨站点脚本,这就是为什么您必须使用这些工具的原因。(为什么ajax不起作用)@ProllyGeek不,你不能像同源策略那样@ProllyGeek。您可以使用中的技术来实现这一点。Greasemonkey和Tampermonkey一直在做跨域mashup。如果你使用iframe,我想是的,你可以。scriptlet/bookmarklet怎么样?你打算用这些结果做什么?非常确定这样做违反了跨站点脚本,这就是为什么您必须使用这些工具的原因。(为什么ajax不起作用)@ProllyGeek不,你不能像同源策略那样@ProllyGeek。您可以使用中的技术来实现这一点。Greasemonkey和Tampermonkey一直在做跨域mashup。实际上,用户脚本有API,比如
GM\u xmlhttpRequest
来做跨域AJAX。这不是这里的主要问题,因为目标页面是AJAX驱动的——这需要更多的解决方法。@BrockAdams只是想澄清一下,我说的任何用户脚本都需要用户先安装第三方插件或脚本(这可能会触发安全警告)对吗?否。Chrome和Opera本机支持此功能。但是使用Greasemonkey、Tampermonkey和/或脚本式扩展;它们更好。至于安全和隐私:他们的代码是公开可见和/或开源的,并且有着可靠的记录。坦白地说,这些扩展比安装Chrome或Firefox的风险要小得多。@BrockAdams抱歉,但你似乎在说默认情况下Chrome和Opera允许跨域脚本编写,而不需要