2012-05-09 112 views
-1

我一直在使用PHP Graphviz在iframe中繪製我的工作流圖。就在最近我開始看到鉻(在Linux上)的不穩定行爲。當我通過PHP Graphviz創建一個簡單的圖形時(使用這裏接受的答案:PHP GraphViz Documentation),Firefox會正確創建圖形並具有滾動條,但是Chrome會縮放整個圖形以適應iframe。PHP Graphviz鉻擴展問題

問題是,當iframe變得比圖表小得多時,鉻會縮小圖表而不是讓它滾動,從而使整個事情變得微型且不可讀。我無法找到iframe或PHP Graphviz的任何設置來解決問題。

我的iframe的文檔是這樣的:

echo "<iframe id='graphwin' src='/tools/tool-temp-svg2.html' scrollbars='yes' frameborder='1' height='50' width='50'></iframe>"; 

和內部文件是一樣的,在連接到上面的問題給出。

Chrome上看起來就像這樣(以真實比例):

enter image description here

鉻的版本是:18.0.1025.151(Ubuntu的12.04),但在鉻被看到。 Firefox工作正常。

我在鉻網站上看到過這種行爲的錯誤報告,但它們都很舊,全部標記爲已解決。

UPDATE:增加了一個演示頁面在這裏:http://www.legalinfo-online.com/demo/tool-temp-svg.php

+0

你應該提供一個網址來重現你所說的話,因爲沒有它是一種猜謎遊戲。 – hakre

+0

恐怕網上的網址是在htaccess的後面,我無法提供鏈接。該問題可通過創建兩個文件來重現。第一個文件有一行我粘貼上面,第二個文件有我鏈接的代碼。希望有人能夠使用這兩個重現錯誤。 – recluze

+0

然後進行公開的第二個設置。你真的期望其他人爲你做這件事嗎? – hakre

回答

0

如果沒有更多的細節,我必須假設你正在調用的GV->圖像()方法不指定任何參數在這種情況下,GV答案與SVG輸出。如果是這種情況,我認爲Chromium實際上是在做正確的事情。 iframe爲svg佈局提供邊界框,它只是呈現svg以適應它。

要強制svg呈現更大的尺寸,我認爲你可以改變svg節點的viewbox屬性來指定佈局的範圍。這個想法是,鉻會使SVG適應指定的視圖框,然後iframe會嵌入更大的視圖框。警告 - 我沒有嘗試過。

或者,作爲解決方法,您可以使用參數調用gv-> image()方法,以強制Graphviz生成.png等。由於.png文件具有與其關聯的自己的大小,我相信,嵌入式iframe會調整它的內部邊界以適合.png,並在內部視圖大於iframe的邊界時顯示滾動條。

+0

謝謝@parselmouth。不幸的是,PNG不是一種選擇,因爲我必須擁有SVG(其中包括可點擊節點等) – recluze

+0

@recluze ahhhh ...是的,SVG對於該功能非常好。你應該可以閱讀SVG DOM,對吧?如果是這樣,請嘗試更改視圖框屬性 - 希望這會強制鉻渲染到指定的大小而不是iframe的大小。無論如何 - 對你和你的項目最好的祝願。 – parselmouth