首页 > 解决方案 > 与 HTML 集成后,JQuery 代码未执行

问题描述

我正在自动化一个过程,其中我必须登录网站并仅从不同类型的文件中下载 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>

标签: javascriptjqueryhtml

解决方案


编辑:确实,我对此很不满意。没有仔细阅读你的代码。

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

我在这里的假设可能完全偏离基础,如果是这种情况,请提前道歉。就是说,看起来您确实正在尝试在 IFrame 中加载页面并在 IFrame 外部使用 jQuery 从 IFrame 内部读取数据。

长话短说:您不能使用 jQuery(或任何 javascript,或者,如果浏览器正常工作,则可以使用任何东西)从 IFrame 外部操作或读取 IFrame 内的内容,如果该 IFrame 具有一个 src 标签

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

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

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

推荐阅读