2

HTML要素からすべてのtabindex属性を削除するための最良の方法は何ですか?GWtは、コードのどこにも設定されていなくても、この属性を設定しているようです。tabindexを-1に設定します。

以下のコードは機能していますが、タグ名に従ってすべての要素を検索する必要があり、ページの読み込みが遅くなるため、面倒です。他に何か提案はありますか?私はJavaScriptを初めて使用するため、JavaScriptを使用しないソリューションをお勧めします。

        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");

            }

        }
4

3 に答える 3

8

その時あなたが何を求めているのか完全にはわかりません。タブインデックス属性を削除したい。あなたのどちらか:

  • HTMLでtabindex属性を手動で-1に設定します。
  • すでに持っているコードを使用してください。
  • または、他のスレッドで簡略化されたJQueryバージョンを使用します。

おそらく私はあなたが達成しようとしていることを誤解しましたか?

編集

たぶんこれ:

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

これにより、-1に設定するのではなく、削除する必要があります...うまくいけば。また誤解してしまったらごめんなさい!

JQueryremoveAttrリンク

于 2012-06-26T10:12:24.763 に答える
0

私はついにそれを理解しました。

Javascirpt / jqueryを試しましたが、ページがまだ完全にレンダリングされていないため、タブインデックスを削除できませんでした。パネルはプログラムでの後に配置されますwindow.load。私がやったことはRootPanel.classgwtを利用することです(これはすでに使用されていましたが、私は知りませんでした)。

タスク:値が-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 that I know of 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");
    }
于 2012-06-28T08:13:18.170 に答える
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' );
于 2016-06-27T10:01:29.787 に答える