2015-09-02 33 views
0

我想在點擊iframe中的按鈕後評估一些javascript。該按鈕是一個鏈接,javascript在該鏈接的href中進行評估。在href中評估js不是我的選擇,但我沒有訪問任何其他屬性,因爲它是SSRS報告。 似乎沒有環境變量在iframe按鈕的範圍內定義,沒有consoledocument甚至沒有self。 當我直接打開iframe報告並且不在iframe內時,按鈕js的範圍包含所有重要的環境變量。 我附上按鈕的代碼。Firefox的JavaScript評估在iframe中錨點的href中

<a tabindex="1" href="javascript:eval%20(%20%20%20%20%20unescape%20%20%20%20%20('self')%20)" style="text-decoration:none;" target="_top"><img onload="this.fitproportional=true;this.pv=0;this.ph=0;" src="/ReportServer/Reserved.ReportViewerWebControl.axd?ExecutionID=cgj2rc55ffw43k45lk0yk055&amp;Culture=2057&amp;CultureOverrides=False&amp;UICulture=9&amp;UICultureOverrides=False&amp;ReportStack=1&amp;ControlID=faa6cce17cd640bf8ebe1f6af602c84b&amp;OpType=ReportImage&amp;IterationId=62c2cb36498248bf8b8b9e784a09d4b8&amp;StreamID=68b4d5bd-b6bf-4d8a-8ad4-b254b9e67c56" border="0" height="35" width="93"></a> 

請記住,是在一個iframe中,問題只出現在那裏。上述生成

uncaught exception: ReferenceError: self is not defined 

回答

1

如果你得到這個行爲:

  1. 您使用的是舊的和不支持版本的Firefox(必須是32歲以上)。
  2. 您的<a>標籤所在的子幀與頂部窗口不同。

在這種情況下,因爲該鏈接的目標是_top,腳本不能只在頂層窗口(這將是一個同源策略違例)運行。因此,它會在沙箱中運行,該沙箱沒有任何排序的DOM對象,但具有標準的JavaScript對象(Array,Object等等)。

在較新的Firefox版本中,腳本在這種情況下根本不運行,所以您不會遇到未捕獲的異常,但它也不會執行任何操作。