2012-04-18 148 views
0

我正在處理從swf轉換器創建的HTML頁面。生成的HTML使用SVG圖像創建與swf的佈局相匹配的元素。獲取沒有設置高度/寬度的圖像的高度/寬度

那麼我想一個加載圖像上這些SVG圖像的頂部,但不幸的是,SVG圖像不具備的高度和寬度設置,所以它們看起來像這樣:

<div class="wlby_5"> 
    <!-- Start of symbol: element3 --> 
    <img src="FlashTemplate_assets/svgblock_2.svg" class="wlby_4"></img> 
    <!-- End of symbol: element3 --> 
    </div> 

當我將圖像追加到此圖像上,我無法獲得原始高度和寬度以調整我加載的圖像的大小,因此它調整大小以匹配原始svg圖像。這就是我如何加載新形象:

var imgWidth = $('div[class~="' + obj.name+ '"]').find('img').width() 
var imgHeight = $('div[class~="' + obj.name+ '"]').find('img').height(); 


console.log("width of image", imgWidth); 
console.log("height of image", imgHeight); 
console.log($('div[class~="' + obj.name+ '"]').find('img')); 

$('div[class~="' + obj.name+ '"]').find('img').attr('src', obj.value); 
$('div[class~="' + obj.name+ '"]').find('img').attr('width', imgWidth); 
$('div[class~="' + obj.name+ '"]').find('img').attr('height', imgHeight); 

所以我試圖讓div層內的圖像的高度和寬度,但這些都無法訪問,在控制檯它們都是設置爲0.

如何訪問原始svg圖像的高度和寬度,以便將其應用於正在加載的新圖像?

由於

斯蒂芬

+0

我不知道有什麼作用.SVG對這裏的東西,但對於正常圖像,只有在完成加載後才能獲得高度和寬度。所以,你必須設置一個'onload'處理程序,並在火災發生時獲得高度和寬度。 – jfriend00 2012-04-18 09:35:11

回答

1

有兩種方法來檢索在這些情況下的SVG圖像的高度/寬度。兩種方法都有效,但我個人更喜歡第一種。

選項1

的SVGElement對象的getBBox()方法都可以使用。這可以檢索x和y偏移以及寬度和高度。

$('img').getBBox().width 
$('img').getBBox().height 

選項2

或者,你可以使用getBoundingClientRect()方法是這樣的:

$('img').getBoundingClientRect().width; 
+0

是的請,我試過onload似乎並沒有工作,以及我如何實施它不起作用。 – StephenAdams 2012-04-18 09:38:20

+0

@stevo好吧給我幾分鐘 – 2012-04-18 09:39:38

+0

我試過執行你發給我的例子,我好像得到了一個循環錯誤,這是我實現它的功能loadImage(src){ \t this.image =新圖片(); \t this.image.src = src; \t if(!this.image.complete && this.image.height == 0){ \t \t loadImage(src); 。 \t}否則{ \t \t $( 'IMG')的CSS({\t顯示:塊, \t \t \t \t \t \t寬度:this.image.width, \t \t \t \t \t \t高度:this.image 。高度}); ('img');}然後調用這個函數就像這樣'var img = $('div [class〜=''+ obj.name +'「''')。 loadImage(img);' – StephenAdams 2012-04-18 10:05:40