获取另一个站点的内容';仅使用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允许跨域脚本编写,而不需要