2011-03-03 103 views
1

創建與SVG SRC的iframe我試圖讓我的擴展名來創建一個iframe它的SRC標籤直接到位於擴展名的文件的SVG文件。類似<iframe src="chrome://trail/content/onpagegui.svg"></iframe>試圖在我的Firefox擴展

每當我這樣做,我會得到以下錯誤:安全錯誤:內容在http:// ...可能無法加載或鏈接到chrome://trail/content/onpagegui.svg。 (我認爲這是相同的原產地政策的原因)

我試過各種方法來解決這個問題,其中我試圖使用資源:而不是鉻:建議在How can a Firefox extension inject a local css file into a webpage?,但我不能讓它工作要麼因爲我試圖嵌入一個svg而不是一個CSS或因爲我只是不明白它......順便說一句,我從MDC瞭解,資源:是javascript代碼,而不是CSS,我是對嗎?這個解決方案是否可行?

我也嘗試了由JavaScript來構建整個iframe和SVG,這項事業噸等問題出現......

有什麼辦法嵌入該.svg文件到新創建的iframe?

非常感謝提前, Yonatan

回答

0

你需要讓你的擴展contentaccessible

+0

目前@ manifest.chrome我有以下行: ' 內容線索鉻/內容/ contentaccessible = YES ' 可悲的是它不工作,我不知道contentaccessible標誌被稱爲正確,因爲我靠在我的擴展的其他部分... – 2011-03-06 09:32:12

+0

啊,這很有趣,我沒有意識到內容可訪問性不適用於框架。對於那個很抱歉。 – Neil 2011-03-06 23:49:25

0

我能想到的兩種可能的解決方案:

  1. 使用例如XMLHttpRequest將您的SVG讀入字符串。然後將幀的src設置爲data: URL
  2. 註冊實現nsIAboutModule一個組成部分。然後將幀的src設置爲您的custom about: URL

諷刺的是這些方法都需要contentaccessible!

+0

好,我只有時間來檢驗第一個選項,它的工作原理,但只是部分,從某些原因,SVG是越來越加載和工作的應該,但它的CSS代碼被完全忽略。(一切都只是黑色)。 哦順便說一句,爲了讀取SVG內容爲我所用,而不是XMLHttpRequest的nsIScriptableInputStream一個字符串,沒有錯吧? 將盡快測試第二個選項,將讓你知道有關結果(得到了我的頭一些其他的事情,以及...)。 – 2011-03-09 16:10:41

+0

我只是試圖實現你的第二個建議,但我一直未能創建一個about:url(使用URL給出的描述),更多的是我發現這個線程http://forums.mozillazine.org/viewtopic.php ?f = 19&t = 2014385&start = 0第一個回覆狀態 這個頁面根本不用於擴展(或者我在這裏誤解了什麼?)。 我實際上想爲我的擴展程序中的另一個問題做一個about:url。 thx again :) – 2011-03-14 14:12:10

+0

OK我最終成功地做了about:url工作(有趣的是我沒有做一件事情......非常奇怪),無論如何它給出了與第一個解決方案相同的結果,svg得到了加載但只在黑色....我的猜測是,它不明白它的文檔類型,但如果它基本上是相同的文件,但不是? – 2011-03-14 17:49:55