访问文档永远不会完全加载的框架中的内容

时间:2011-09-11 04:46:47

标签: jquery google-chrome-extension frames frameset

我有一个不寻常的设置。首先,我有一个带框架的页面

<html>

 <head>

  <title>My Chat</title>

</head>

 <frameset id="resize" rows="*,135">

  <frame name="Main" src="/chat/stream.pl">

  <frame name="Comm" src="/chat/realm.pl">

 </frameset>

</html> 

主框架具有从服务器不断流式传输的内容。问题是浏览器会将此视为页面永远不会加载,并且不会发生超时。在页面上,有这样的内容。

<table class="PSTPRI" cellspacing="3" cellpadding="2">

  <tr>

   <td>

    <IMG SRC="http://mysite.com/myimage.jpg" HEIGHT="470" WIDTH="550" ALIGN="left" BORDER="0">

    <!-HEAD-->  lots of text for the post header <!-POST-->

    <p><span style="font-size: 11px; color: #FFFFFF; font-family: Verdana;">the post text<BR></span></p>

   </td>

  </tr>

  <!-- ...more content here, each post is a new TR  -->
</table>

我希望能够将直播事件绑定到此内容中的图片。警告 - 我将此作为chrome扩展,我将分配给包含框架集的页面。该脚本有效,我只需要能够将事件附加到图像上。现在,这是我要附加的示例事件。

$('table.PSTPRI td img').live('click', function () {
    alert('test');
});

问题是,1)我不知道如何在正确的上下文中选择图像,2)我需要选择器工作假设文档​​没有被加载,即使对象显示在屏幕上。

1 个答案:

答案 0 :(得分:1)

嗯,你的问题中有一些细节遗漏,请原谅我,如果这不是你寻求的答案。

我相信您正试图在“带框架的页面”中注入一些脚本。 如果这是正确的,您只需在content_scripts部分的manifest.json中设置两个属性,如下所示:

"content_scripts": [
    {
      "matches": ["Match pattern for your page with frames"],
      "js": ["main_script.js"],
      "all_frames": true,
      "run_at": "document_start"
    },
    {...}
  ]

  

all_frames:控制内容脚本是否在所有帧中运行   匹配页面,或仅顶部框架。


  

run_at:控制何时注入js中的文件。可   “document_start”,“document_end”或“document_idle”。默认为   “document_idle”。

     

在“document_start”的情况下,文件在任何之后注入   来自css的文件,但在构造任何其他DOM之前或任何其他DOM   脚本运行。

参考文献: http://code.google.com/chrome/extensions/content_scripts.html