如何使用JavaScript打开URL并估算字数?

时间:2016-11-24 06:30:04

标签: javascript html dom

<html>
<head>
<script type="text/javascript">
function open_urls() {
var url1="https://finance.yahoo.com/";
var newpage=window.open(url1);
alert(newpage.document.body.innerText.split(' ').length);
                      }           
</script>
</head>
<body onload="javascript: open_urls()"></body>
</html>

上面的代码不起作用,如何访问不同URL的DOM? 我想打开一个网址并显示该网址的字数。

2 个答案:

答案 0 :(得分:1)

您无法打开另一个窗口和页面,并希望能够访问它。 Web遵循许多安全策略来阻止此类操作,例如Frequently Asked Questions (FAQ) for Visual Studio 2017 RC。长话短说,您无法访问不属于同源的网址,而不是您要拨打的网页。因此,您无法在您的示例中访问雅虎财务(最有可能)。

如果您使用同一来源进行通话,则可以使用Same-Origin policy之类的API来获取文字并在那里进行单词计数,或者您甚至可以加载iframe并查询:{{1} }。

因此,知道您无法通过浏览器执行此操作,可以从NodeJS应用程序执行此操作(也许还使用fetch):

myIframe.contentWindow.document.body.innerHTML

我知道您希望从浏览器中执行此操作,但遗憾的是,您无法对无法控制的原点执行此操作。

答案 1 :(得分:-1)

你可以尝试一下。 在你index.html(假设)写这个:

<html>
 <head>
   <title>Index Page</title>
 </head>
  <script type="text/javascript">
   function poponload()
    {
      testwindow = window.open("new_window.html", "mywindow","location=1,status=1,scrollbars=1,width=600,height=600");

    }// here new_window.html is file you want to open or you can write any url there
  </script>
<body onload="javascript: poponload()">
    <h1>Hello this can Work</h1>
</body>
</html>

假设你的new_window.html是这样的:

<html>
<head>
 <script>
     function get_text(el) {
         ret = "";
         var length = el.childNodes.length;
         for(var i = 0; i < length; i++) {
         var node = el.childNodes[i];
         if(node.nodeType != 8) {
           ret += node.nodeType != 1 ? node.nodeValue : get_text(node);
       }
    }
  return ret;
}
 function run_this(){
   var words = get_text(document.getElementById('content'));
   var count = words.split(' ').length;
   alert(count);
 }
</script>
</head>
<body onload='javascript: run_this()' id="content">
  <h1>This is the new window</h1>

</body>
</html>