2013-12-19 44 views
0

所以我正在做一個iframe發佈消息到父頁面。 iframe的內容發送寬度和高度的POST消息,並在收到消息後抓住這些元素以更改元素的樣式。然而,每當我這樣做,twitter引導正在改變元素的風格(我只能假定它是一個時間問題)。CSS Twitter引導覆蓋JavaScript樣式,因爲它在腳本之後執行。如何最後執行腳本?

我試着包裝消息監聽器的功能,但代碼從未執行。這就是:

 window.addEventListener("message", function(event) { 
      window.onload = function() { 
       console.log("loaded"); 
       var array = event.data.split(" "); 
       addStyle(document.getElementById("outer-frame-form"), 
        ['height', 'width', 'position', 'overflow'], 
        [array[0],array[1],'relative','hidden'], 
        true); 
      } 
     }); 

     function addStyle(element, properties, values, important) { 
      // this will be run when the whole pa 
       var i; 
       var cssString = ""; 
       for (var i=0; i<properties.length; i++) 
       { 
        //remove previously defined property 
        if (element.style.setProperty) 
         element.style.setProperty(properties[i], ''); 
        else 
         element.style.setAttribute(properties[i], ''); 

        cssString += properties[i] + ':' + values[i] + ((important) ? ' !important' : '') + '; ' 
        console.log(properties[i]); 
       } 

       //insert the new style with all the old rules 
       element.setAttribute('style', element.style.cssText + " " + cssString); 
     } 

我可以使用哪些其他的方式來等待,所有的CSS加載後執行腳本,因此Twitter的引導將無法覆蓋它?謝謝!

回答

0

我認爲你可能會過度複雜化。在某個地方的模板中,您將有一個標題標籤 - 這是引導程序加載的位置。把你的CSS meta tag放在這個之下 - 它的「級聯樣式表」讓最後的優先級爲

+0

它是,高度和寬度仍然被覆蓋。 –