2014-02-28 16 views
1

我已經在vaadin中創建了一個自定義javascript組件。我已經使用@StyleSheet註釋添加了幾個外部樣式表。該組件工作正常,但在IE8中顯示腳本錯誤。腳本錯誤的數量等於使用註釋包含的外部CSS的數量。自定義Javascript組件:使用@StyleSheet在IE8中產生腳本錯誤

錯誤是:對象不支持此操作。

enter image description here

我該如何解決這個問題?

UI類別:

package com.example.example; 

import javax.servlet.annotation.WebServlet; 

import com.vaadin.annotations.Theme; 
import com.vaadin.annotations.VaadinServletConfiguration; 
import com.vaadin.server.VaadinRequest; 
import com.vaadin.server.VaadinServlet; 
import com.vaadin.ui.UI; 
import com.vaadin.ui.VerticalLayout; 

@SuppressWarnings("serial") 
@Theme("example") 
public class ExampleUI extends UI { 

    @WebServlet(value = "/*", asyncSupported = true) 
    @VaadinServletConfiguration(productionMode = false, ui = ExampleUI.class) 
    public static class Servlet extends VaadinServlet { 
    } 

    @Override 
    protected void init(VaadinRequest request) { 
     final VerticalLayout layout = new VerticalLayout(); 
     layout.setMargin(true); 
     setContent(layout); 
     MyComp mycomponent = new MyComp();  
     layout.addComponent(mycomponent); 
    } 

} 

元器件

服務器部分:MyComp.java

package com.example.example; 

import com.vaadin.annotations.JavaScript; 
import com.vaadin.annotations.StyleSheet; 
import com.vaadin.ui.AbstractJavaScriptComponent; 


@JavaScript({"component.js","component-connector.js"}) 
@StyleSheet({"Stylesheet1.css"}) 
public class MyComp extends AbstractJavaScriptComponent { 

    private static final long serialVersionUID = 1L; 

    @Override 
    protected MyCompState getState() { 
     return (MyCompState) super.getState(); 
    } 
} 

客戶端部分:component.js

var mylibrary = mylibrary || {}; 

mylibrary.Comp = function(element) { 
    element.innerHTML = "<div>hello</div>"; 
}; 

連接器:組件connector.js

window.com_example_example_MyComp = 
function() { 
    var mycomponent = new mylibrary.Comp(this.getElement()); 

    this.onStateChange = function(e) {}; 

}; 

國家:MyCompState.java

package com.example.example; 

import com.vaadin.shared.ui.JavaScriptComponentState; 

public class MyCompState extends JavaScriptComponentState{ 

    private static final long serialVersionUID = 1L; 

} 

種樣式

Stylesheet1.css

div { 
} 

+0

我假設你正在編寫一個GWT應用程序。嘗試做一個漂亮的編譯,並看看編譯後的源代碼。只是爲了確保:包含的CSS文件的數量> 100? –

+0

我已經更新了源代碼的問題。 css文件數量<10 – 4J41

+0

我在IE中遇到同樣的問題的時候,對象的名稱已經存在屬性/對象/關鍵字。像我名稱方法selection()不工作,當我讓我的選擇錯誤得到解決。 – Neha

回答

0

你可以試着改變你的JavaScript變量名。

+0

感謝您的回覆。問題是我用@StyleSheet註釋添加外部CSS。如果我從代碼中刪除'@StyleSheet({「Stylesheet1.css」})',它將正常工作。我的問題是:有沒有添加外部CSS到自定義組件的方式,不會給腳本錯誤? – 4J41

+0

我不確定。您可以查看https://vaadin.com/api/com/vaadin/annotations/StyleSheet.html瞭解一些提示。 –

0

聽起來像你的CSS代碼被包含爲JavaScript文件。 生成的源可能看起來像 <script src="css_file.css"></script>

時,它應該看起來像 <link href="css_file.css" rel="stylesheet" type="text/css" />

你能告訴我們生成的HTML文件?