加载不同的网站后执行javascript

时间:2011-03-18 23:27:18

标签: web-applications cross-domain javascript yql

我需要编写一个webapp,它将检查站点是否包含一个元素(例如id为id =“iamhere”的div)。此站点可以是任何站点,它与我的脚本不在同一个域中。我想做类似的事情:

  1. 转到我的网站,加载javascript库。
  2. 加载其他网站。
  3. 执行我的功能。
  4. 这似乎是不可能的 - 我是对的(脚本执行在window.location.assign()之后停止,并且没有办法将脚本标记“绑定”到网站的DOM)? 有人有想法,如何让它发挥作用?我知道我可以使用yql,但也许有更好的解决方案。

3 个答案:

答案 0 :(得分:0)

查看JavaScript的setTimeout()功能。您可以通过以下方式定期检查准备情况:

function checkReadyState() 
{
  if (somethingIsReady)  {
    doStuffWhenReady();
  }
  else {
    setTimeout(function() { checkReadyState(); }, 200);   //Waits 200 milliseconds and calls checkReadyState() again.
  }
}

答案 1 :(得分:0)

您需要使用脚本语言获取网站以充当代理。我将在这个例子中使用PHP:

<?php

$file = file_get_contents('http://www.google.com');

echo $file;

?>

必要时填充div - 您可以使用javascript进行填充。如果你正在使用jQuery,它看起来像这样:

<script>
$(function(){
    $('#amihere').load('myphpproxyfile.php');
});
</script>

答案 2 :(得分:0)

我会使用YQL。

替换最后2个查询字符串参数并检查json结果。

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url=@url%20and%20xpath=@xpathformat=json&callback=cvfunc&url=<your-url>&xpath=<your-xpath>

示例:

http://query.yahooapis.com/v1/public/yql?format=json&callback=cbfunc&url=http://www.stackoverflow.com&xpath=//div[@id=%27header%27]&q=select%20*%20from%20html%20where%20url=@url%20and%20xpath=@xpath