Использование двоеточия в HTML-тег и обрабатывать его элемент в JavaScript - PullRequest
1 голос
/ 30 мая 2010

почему мои "кнопки myns:" не становятся красными в IE 6/7/8 в отличие от Firefox / Opera / Safari / Chrome?

<html>
    <head>
        <script type="text/javascript">
            window.onload = function() {
                var tmp = document.getElementsByTagName('myns:button');

                for (i = 0; i < tmp.length; i++) {
                    tmp[i].style.color = '#FF0000';
                }
            };
        </script>
    </head>
    <body>
        <myns:button>My NS Button</myns:button>
    </body>
</html>

Я уже пытался добавить к своему js следующее:

document.createElement('myns:button');

Но это не работает в IE, почему? Спасибо.

Ответы [ 3 ]

2 голосов
/ 30 мая 2010

Как и другие, я действительно рекомендую вам не делать этого. Но ...

Если вы действительно хотите, и вы не слишком озабочены проверкой, вы можете сделать:

<html xmlns:myns='http://www.example.com/namespaces'>
    <head>
        <script type="text/javascript">
            window.onload = function() {
                 var tmp = document.getElementsByTagName(
                         (typeof document.body.scopeName == "undefined") ? 
                              'myns:button' : 'button');

                 for (i = 0; i < tmp.length; i++) {
                    if ((typeof tmp[i].scopeName == "undefined") || 
                            (tmp[i].scopeName == 'myns'))
                       tmp[i].style.color = '#FF0000';
                 }
            };
        </script>
    </head>
    <body>
        <myns:button>My NS Button</myns:button>
    </body>
</html>

Измените http://www.example.com/namespaces на собственное имя пространства имен.

Протестировано в последних версиях FF, Chrome, Opera и IE6, IE7 и IE8.

См. http://msdn.microsoft.com/en-us/library/ms534388%28VS.85%29.aspx в качестве отправной точки для информации о том, как это работает в IE.

1 голос
/ 30 мая 2010

Я не уверен, почему нужен нестандартный элемент DOM, но если требуется сделать кнопку с другим видом (красный текст), обычным способом HTML будет использование атрибута и стиля класса кнопка с CSS :

<style type="text/css">
    .mynsbutton {color: #ff0000;}
</style>

<input type="button" class="mynsbutton" value="My Button" />

Если вам нужно найти все элементы mynsbutton с javascript для дальнейшей обработки, вы можете заглянуть в библиотеку jQuery или использовать один из готовых фрагментов кода на Интернет чтобы найти все элементы в вашем классе mynsbutton.

1 голос
/ 30 мая 2010

myns:button не является допустимым тегом HTML, и браузеры могут интерпретировать его по-разному.

...