2013-10-01 2 views
2

Я развиваюсь в PHP и использую некоторые html-обертки (стилизованные div) вокруг динамического/изменяемого содержимого. Другими словами, я использую стандартный шаблон несколько раз и заполняю его другим HTML, создавая похожие «модули». Я также использую jQuery для динамического обновления содержимого на основе взаимодействия с пользователем. Для каждого модуля требуется дополнительная информация, чтобы сообщить jQuery, как обрабатывать взаимодействие пользователя. Я пытаюсь использовать микроданные или атрибуты данных для этого. Примеры:Microdata vs. атрибут данных в модульном HTML5

<script> 
    $(document).ready(function() { 
    eval($(".wrapper").children("meta[itemprop=userDoesSomething]").attr("content")); 
    }); 
</script? 
<div itemscope class="wrapper" id="module1"> 
    <meta itemprop="userDoesSomething" content="alert('Microdata is better!');"> 
    Module-specific content 
</div> 

или

<script> 
    $(document).ready(function() { 
    eval($(".wrapper").data("userDoesSomething")); 
    }); 
</script> 
<div class="wrapper" id="module1" data-userDoesSomething="alert('Data attributes are better!');"> 
    Module-specific content 
</div> 

И сделать то же самое, но с помощью микроданных, я не должен вставить атрибут в теге обертки. Я могу просто включить «данные» в оболочку с помощью метатега, сохранив шаблон оболочки. Я также понимаю, что атрибут данных, вероятно, более уместен, поскольку микроданные действительно предназначены для типизированных данных, но в этом случае это более удобно. Любые мысли о том, что лучше в долгосрочной перспективе?

+0

Зачем вам использовать eval()? – adeneo

+0

А что такое метатег, сделанный внутри div, может быть, вы должны начать с основ? – adeneo

+1

Вы должны использовать атрибуты 'data', однако ваш метод использования' eval() 'кода, хранящегося в них, является, откровенно говоря, ужасающим. –

ответ

2

Возможны оба способа.

Микроданные not only для «типизированных данных». Если хотите, вы можете определить свой собственный словарь Microdata. Но вы можете также использовать «local» один (курсив мой):

Примеры в предыдущем разделе, показывают, каким образом информация может быть отмечен на страницу, которая не ожидает его микроданных быть использованы повторно. Микроданные наиболее полезны, хотя, когда они используются в контекстах, где другие авторы и читатели могут сотрудничать, чтобы использовать новые виды разметки.

Однако, если вы хотите использовать какой-либо другой Microdata лексики (например, schema.org) на своих страницах в будущем, вы можете получить некоторые конфликты с вашим «местным» микроданных. Поэтому я бы не использовал Microdata, если он не предлагает вам преимуществ по сравнению с атрибутами data-*.

Относительно элемента meta: Вы можете получить что-то подобное с атрибутами data-*. В HTML5, the script element can be used for "data blocks". Таким образом, вы могли бы использовать что-то вроде:

<div class="wrapper" id="module1"> 
    <script type="text/plain" data-userDoesSomething="alert('Data attributes are better!');"> 
    </script> 
    Module-specific content 
</div> 

<div class="wrapper" id="module1"> 
    <script type="text/plain" data-userDoesSomething> 
    alert('Data attributes are better!'); 
    </script> 
    Module-specific content 
</div> 

<!-- etc. --> 

Вместо text/plain, вы можете использовать любой подходящий вашим потребностям (JSON, HTML, ...).

+0

Каковы атрибуты data- *, отличные от микроданных? И вы говорите, что можете создать свой собственный стандарт Microdata? Я не понимаю. Объясните –

+1

@AliGajani: Любой может создавать словари Microdata * * (не * стандарты *), точно так же, как кто-то создал словарь schema.org. И Microdata также позволяет «локальные» словари, которые не нужно публиковать в первую очередь. Локальная лексика Microdata и использование атрибутов 'data- *' аналогичны, поскольку обе они не могут быть (повторно) использованы другими. Однако использование «реального» (опубликованного) словаря обычно предназначено для использования другими. – unor

+0

Я думал, что атрибут data- * был использован для хранения, тогда как для определения были использованы данные Micro-data, я пропустил здесь эту точку.Я не видел, чтобы люди использовали данные * для семантических целей, обычно это как data-reject = "modal". –

Смежные вопросы