2012-01-05 53 views
1

我想在沒有<body>標記的站點上運行以下JavaScript,並且它由嵌套文檔的<framesets>組成。JavaScript似乎不適用於框架集內的html標籤的html頁面

document.onclick= function(event) { 
    if (event===undefined) 
     event= window.event; 
    var target = 'target' in event ? event.target : event.srcElement; 
    alert("clicked"); 
}; 

我正在處理的HTML文檔非常奇怪,因爲我從來沒有見過這樣的東西。總之,JavaScript不會運行,但不會顯示錯誤消息。 Firebug只返回HTML xPath,而不是整個/ html/frameset/frame/html/body/div/a,所以我可以看到有框架標籤存在一些問題。注意我無法控制我應該測試的目標站點。

<html> 
    <head> 
     <title>weird site...</title> 
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="IE=EmulateIE8" http-equiv="X-UA-Compatible"> 
    </head> 
    <frameset frameborder="0" border="0" framespacing="0" cols="*,796,*"> 
     <frame scrolling="no" noresize="noresize" src="/main/left.php" name="links" style="background-color: transparent;"> 
      <html> 
       <body> 
        <div> 
         <a>text</a> 
        </div> 
        .... 
       </body> 
      </html> 
     </frame> 
     <frameset frameborder="0" border="0" framespacing="0" rows="58,*"> 
      <frame scrolling="no" noresize="noresize" marginheight="0" marginwidth="0" src="/main/top.php" name="oben" style="background-color: transparent;"> 
       <html> 
        <body>....</body> 
       </html> 
      </frame> 
      <frameset frameborder="0" border="0" framespacing="0" cols="116,680"> 
       <frame scrolling="no" noresize="noresize" marginheight="0" marginwidth="0" src="/main/login.php" name="persoenliches" style="background-color: transparent;"></frame> 
       <frame scrolling="auto" noresize="noresize" marginheight="0" marginwidth="0" src="/main/index.php" name="mitte" style="background-color: transparent;"></frame> 
      </frameset> 
     </frameset> 
     <frame scrolling="no" noresize="noresize" src="/main/right.php" name="heartbeat"></frame> 
     <noframes></noframes> 
    </frameset> 
</html> 

回答

1

你在哪裏把你的Javascript代碼?請記住,每個不同的框架都是一個獨立的頁面,其中包含獨立的windows(全局變量)和documents,因此您無法在一個地方編寫事件處理程序,並期望它能夠爲所有人服務。

+0

我正在Firebug的控制檯選項卡中運行js代碼。有沒有辦法一次訪問所有幀的所有文檔?有可能通過xpath訪問一個框架? '/ html/frameset/frame/html/body/a' – KJW 2012-01-05 19:36:55

+0

我不認爲你可以使用普通的XPath來訪問這樣的iframe。在進入框架之後,您需要在繼續前單獨獲取文檔。此外,還有一個問題,即只有在來自與父框架相同的域時,才允許您的JS在框架內窺視。 – hugomg 2012-01-05 19:43:17