カスタムデータ属性: http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data
「仕事」と言うとき、つまり、次のようなHTMLがある場合、
<div id="geoff" data-geoff="geoff de geoff">
次のJavaScriptを使用します。
var geoff = document.getElementById('geoff');
alert(geoff.dataGeoff);
IE 6に「geoff de geoff」を含むアラートを生成しますか?
getAttribute
を使用して、カスタム(または独自の)属性の値を取得できます。あなたの例に従って
<div id="geoff" data-geoff="geoff de geoff">
を使用してdata-geoff
の値を取得できます
var geoff = document.getElementById("geoff");
alert(geoff.getAttribute("data-geoff"));
MSDN を参照してください。そして、これを機能させるにはIE7が必要だと言われていますが、IE6でこれを少し前にテストし、正常に機能しました(互換モードでも)。
ただし、これはもちろんHTML5固有の属性とは関係ありません。
はい、動作します。
IEはIE4のgetAttribute()
をサポートしています。これはjQueryがdata()
で内部的に使用するものです。
data = elem.getAttribute( "data-" + key ); // Line 1606, jQuery.1.5.2.js
したがって、jQueryの.data()
メソッドまたは単純なVanilla JavaScriptを使用できます。
サンプルHTML
<div id="some-data" data-name="Tom"></div>
Javascript
var el = document.getElementById("some-data");
var name = el.getAttribute("data-name");
alert(name);
jQuery
var name = $("#some-data").data("name");
IE6はHTML5データ属性機能をサポートしていないだけでなく、実際には事実上no現在のブラウザがそれらをサポートしています!現時点で唯一の例外はChromeです。
data-geoff="geoff de geoff"
を属性として使用することは完全に自由ですが、現在のブラウザバージョンのChromeのみが.dataGeoff
プロパティを提供します。
幸いなことに、allIE6を含む現在のブラウザは、標準のDOM .getAttribute()
メソッドを使用して未知の属性を参照できるため、.getAttribute("data-geoff")
が機能します。どこにでも。
近い将来、FirefoxとSafariの新しいバージョンがデータ属性のサポートを開始しますが、すべてのブラウザで機能する完全に優れたアクセス方法があるため、HTML5メソッドを使用する理由はまったくありません。一部の訪問者に対してのみ機能します。
CanIUse.com で、この機能のサポートの現在の状態に関する詳細を確認できます。
お役に立てば幸いです。
IEは常にこれをサポートしており(少なくともIE4以降)、JSからアクセスできると思います。それらは「エキスパンドプロパティ」と呼ばれていました。 MSDNの古い記事 を参照してください
この動作は、DOM要素でexpandopropertyをfalseに設定することで無効にできます(デフォルトではtrueなので、expandopropertiesはデフォルトで機能します)。
編集:URLを修正しました
新しいブラウザのデータセットプロパティのように、すべてのカスタムデータ属性を一度に取得する場合は、次の操作を実行できます。これは私がやったことであり、IE7 +で私にとってはうまく機能します。
function getDataSet(node) {
var dataset = {};
var attrs = node.attributes;
for (var i = 0; i < attrs.length; i++) {
var attr = attrs.item(i);
// make sure it is a data attribute
if(attr.nodeName.match(new RegExp(/^data-/))) {
// remove the 'data-' from the string
dataset[attr.nodeName.replace(new RegExp('^data-'), '')] = attr.nodeValue;
}
}
return dataset;
}
IE6では、動作しない場合があります。参考: MSDN
JQueryを使用してほとんどの場合を処理することをお勧めします。
var geoff = $("#geoff").data("data-geoff");
alert(geoff);
コーディングでこれを試してください。