与HTML集成后无法执行JQuery代码

时间:2018-09-24 06:47:18

标签: javascript jquery html

我正在自动化一个过程,其中我必须登录到website并仅从不同类型的文件中下载CSV文件。

我的jQuery代码正在控制台中执行,但是与HTML集成后却没有执行。请在下面找到jQuery代码:

<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script type="text/javascript">
   $(window).on("load", function() {
   $('.ibody tr').each(function(a, b) {
   var count = 0;
   var name = $('.cl', b).text();
   if (name.indexOf(".CSV") !== -1 && name.indexOf("TAS") !== -1) {
   var d = a - 9;
   var hiddenIFrameID = 'hiddenDownloader' + count++;
   var iframe = window.createElement('iframe');
   iframe.id = hiddenIFrameID;
   iframe.style.display = 'none';
   window.body.appendChild(iframe);
            iframe.src = "https://www.shipper-ml.com/viewReports.do?ctrl=reportListForDownload&action=DownloadReport&param=" + d;
          }
        });
      });
    
  </script>
</head>
<body></body>
</html>

2 个答案:

答案 0 :(得分:0)

编辑:的确,我与此背道而驰。没有仔细阅读您的代码。

出于历史目的将其留在这里...

根据我的假设,我可能会完全落伍,如果是这种情况,请事先道歉。就是说,您似乎真的想在IFrame中加载页面并在IFrame外部使用jQuery从IFrame内部读取数据。

长话短说:您不能使用jQuery(或任何javascript,或者,如果浏览器能够正常工作,甚至可以进行任何操作)来从iframe外部操纵或读取iframe内部的内容,< strong>如果该IFrame具有src标签。

您只能自己操作/读取从头开始构建的iframe。这是设计使然,并且出于重要的安全原因。如果要使用IFrame显示页面,则严格限制只能按原样向用户显示页面。

如果我的假设是正确的,则您需要:

  1. (很好地)将JavaScript嵌入到您现在要在iframe中加载的页面中,或者
  2. 使用AJAX调用将该页面的内容放入当前页面的内存上下文中。如果您确实想使用jQuery查找所需的所有元素,那么这可能意味着跳过一些障碍。
  3. ...或者,您也许可以创建一个空的IFrame,将您从AJAX调用中获得的内容与Javascript一起放入该IFrame中,然后使其正常工作。也许。不确定这一点。

答案 1 :(得分:-1)

可以请您试试吗?将您的window.createElement替换为document.createElement。

$(document).ready(function() {
  $('.ibody tr').each(function(a, b) {
    var count = 0;
    var name = $('.cl', b).text();
    if (name.indexOf(".CSV") !== -1 && name.indexOf("TAS") !== -1) {
    var d = a - 9;
    var hiddenIFrameID = 'hiddenDownloader' + count++;
    var iframe = document.createElement('iframe');
    iframe.id = hiddenIFrameID;
    iframe.style.display = 'none';
    document.body.appendChild(iframe);
    iframe.src = "https://www.shipper-ml.com/viewReports.do?ctrl=reportListForDownload&action=DownloadReport&param=" + d;
      }
    });
  })