2012-06-26 88 views
2

將所有tabindex屬性移除到html元素的最佳方法是什麼? GWt似乎把這個屬性,即使它沒有設置在代碼中的任何地方。它將tabindex設置爲-1。我有下面的代碼工作,但它是乏味的因爲我必須根據其標籤名稱搜索每個元素,並減緩頁面加載。任何其他建議?如果可能的話不用JavaScript,因爲我幾乎可以寫一個。謝謝。將所有tabindex屬性移除到html元素的最佳方法是什麼?

 NodeList<Element> input = this.getElement().getElementsByTagName("input"); 

     if(input.getLength()>0) 
     { 
      for(int i=0; i<=input.getLength(); i++) 
      { 

        input.getItem(i).removeAttribute("tabIndex"); 

      } 

     } 
     NodeList<Element> div = this.getElement().getElementsByTagName("div"); 

     if(div.getLength()>0) 
     { 
      for(int i=0; i<=div.getLength(); i++) 
      { 

        div.getItem(i).removeAttribute("tabIndex"); 

      } 

     } 
+0

這是你在找什麼? [JavaScript的jquery的從 - 的tabindex除去-] [1] [1]:http://stackoverflow.com/questions/1987927/javascript-jquery-remove-from-tabindex – Danny

+0

抱歉沒有。我想完全刪除tabindex。在我發佈之前,我已經閱讀過那本書。謝謝。 – user742102

+0

你也可以完全禁用頁面上的tab鍵。 – user1133275

回答

0

我終於想通了。我試過Javascirpt/jquery,但不能解決它,因爲頁面還沒有完全呈現。所有面板都以編程方式放置,所以使用window.load函數確實有所幫助,因爲即使在放置面板之前它已被調用。我所做的就是利用gwt的RootPanel.class(它已被應用程序使用,我只是不知道它是什麼)sicne我只是java /項目本身的新手。

任務:擺脫所有帶有-1值的tabindex,爲所有腳本標籤添加type =「tex/javascript」,爲樣式標籤添加type =「text/css」,向所有img標籤添加alt。這些都是爲了驗證html。

我不確定這是最好的方式,它肯定會加起來慢加載,但客戶堅持認爲,即使我推理,我也這樣做。所以在這裏,它是:

RootPanel mainPanel = RootPanel.get(Test_ROOT_PANEL_ID); 
     Widget widget = (Widget) getEntryView(); 
     mainPanel.add((widget)); 

     // Enable the view disable the loading view. There should always be 
     // the loading panel to disable. 
     Element mainPanelelement = DOM.getElementById(Test_ROOT_PANEL_ID); 
     Element loadingMessage = DOM.getElementById(LOADING_MESSAGE); 


     Element parent = loadingMessage.getParentElement(); 

     if(parent!=null) 
     { 
//i had to use prev sibling because it is the only way(I know?) on how to access the body //tag that contains the scripts that are being generated by GWT ex.bigdecimal.js 

    Element body = parent.getPreviousSibling().getParentElement(); 
      if(body!=null) 
      { 
       NodeList<Element> elms = body.getElementsByTagName("*"); 
       if(elms.getLength()>0) 
         { 
          Element element=null; 
          for(int i=0; i<=elms.getLength(); i++) 
          { 
           if(elms.getItem(i)!=null) 
           { 
            element = elms.getItem(i); 
            if(element.getTagName().compareToIgnoreCase("script")==0) 
             element.setAttribute("type", "text/javascript"); 
            else if(element.getTagName().compareToIgnoreCase("style")==0) 
             element.setAttribute("type", "text/css"); 
            else if(element.getTagName().compareToIgnoreCase("img")==0) 
            { 
             if(element.getAttribute("alt")=="") 
               element.setAttribute("alt", element.getAttribute("title")!=" " ? element.getTitle() : " "); 
            } 
            else 
            { 
             if(element.getTabIndex()<=0) 
              element.removeAttribute("tabindex"); 
            } 

           } 
          } 
         } 
      } 

     } 
     DOM.setStyleAttribute((com.google.gwt.user.client.Element) loadingMessage, "display", "none"); 
     DOM.setStyleAttribute((com.google.gwt.user.client.Element) mainPanelelement, "display", "inline"); 

     // Change cursor back to default. 
     RootPanel.getBodyElement().getStyle().setProperty("cursor", "default"); 
    } 
6

我不完全確定你在問什麼。您想刪除標籤索引屬性。您可以:

  • 在HTML中手動設置tabindex屬性爲-1。
  • 使用你已有的代碼。
  • 或在other thread中使用簡化的JQuery版本。

也許我誤解了你正在努力實現的目標?

編輯

好吧也許這:

$(document).ready(function(){ 
    $('input').removeAttr("tabindex"); 
}); 

這應該刪除它,而不是將其設置爲-1 ...希望。對不起,如果我再誤解了!

JQuery removeAttr Link

+0

另一個線程設置tabindex = -1,我已經有了,我想刪除所有具有-1值的tabindex,因爲html表示它是無效的。它應該從0-32767像在同一個線程中被評論的那樣。而不是像零這樣的正值,我只想完全刪除它。現在,我正在手動執行每個面板​​,其中我有一打(唷!),謝謝。 – user742102

+0

$(document).ready(function(){}不會幫助,因爲面板是以編程方式設置的。它已經調用了函數,但面板還沒有在那裏,所以我不得不在代碼中添加完全後面板..感謝您的幫助。:) – user742102

+1

'removeAttr'的作品不錯!謝謝。 – DontVoteMeDown

0

使用querySelectorAll函數返回符合選擇的指定組,該文件(使用文檔的節點的深度優先前序遍歷)內的元素列表。

function removeTagAttibute(attributeName){ 
    var allTags = '*'; 
    var specificTags = ['ARTICLE', 'INPUT']; 

    var allelems = document.querySelectorAll(specificTags); 
    for(i = 0, j = 0; i < allelems.length; i++) { 
     allelems[i].removeAttribute(attributeName); 
    } 
} 

removeTagAttibute('tabindex'); 
相關問題