[新着] Webテンプレートを仮オープンしました
<script type="text/javascript">
var uriReference = /^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
var schemeData = '(?:[\\u0000-\\u0027\\u002A-\\u005D\\u005F-\\uFFFF]' +
'|(?:\\^\\()|(?:\\^\\))|(?:\\^\\^))*';
var pointerPart = new RegExp ('(?:xframes\\((' + schemeData + ')\\))?', '');
var associations = /([^,=]+)=([^,=]+),?/g;
function parseXFrames (uri) {
var d, p = pointerPart.exec (uriReference.exec (uri)[9])[1];
while (d = associations.exec (p)) {
if (frames[d[1]]) frames[d[1]].location.href = d[2];
if (parent.frames[d[1]]) parent.frames[d[1]].location.href = d[2];
return false;
}
</script>
<p>
<a href="alternative.html#xframes(F1=sample1.html,F2=sample2.html)"
onclick="return parseXFrames (this);" ></a>
</p><a href="#frames(frame1=example1.html,frame2=example2.html,frame3=example3.html)">
<a target="frame1" href="alt.html#frames(frame1=example1.html,frame2=example2.html)">
alt.html#frames(frame1=example1.html#frames(iframe1=example2.html))
if (/*@cc_on @if (@_jscript) @_jscript_version > 5.5 @else@*/
document.implementation &&
document.implementation.hasFeature ('Events', '2.0') &&
document.implementation.hasFeature ('HTML' , '2.0')
/*@end@*/)
(function () {
/************************************************************************/
function XFramesProcessor (evt) {
arguments.callee.prototype.handleEvent (evt);
return arguments.callee;
}
XFramesProcessor.prototype = {
uriReference : /^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,
associations : /([^=]+)=([^()]*(?:\([^()]*(?:\([^()]*\))?[^()]*\))?),?/g,
pointerPart : new RegExp ('(?:frames\\(' +
'((?:[^()^]|(?:\\^\\()|(?:\\^\\))|(?:\\^\\^)|(?:\\(' +
'(?:[^()^]|(?:\\^\\()|(?:\\^\\))|(?:\\^\\^)|(?:\\(' +
'(?:[^()^]|(?:\\^\\()|(?:\\^\\))|(?:\\^\\^)|(?:\\(' +
'(?:[^()^]|(?:\\^\\()|(?:\\^\\))|(?:\\^\\^)*)' +
'\\)))*' +
'\\)))*' +
'\\)))*)' +
'\\))?', ''),
handleEvent : function (evt) {
this[evt.type].call (this, evt);
},
load : function (evt) {
var data;
/*@if (@_jscript) detachEvent ('on' + @else@*/
removeEventListener (/*@end@*/ 'load', XFramesProcessor, false);
if (data = this.check (location)) {
this.parse (data);
}
},
click : function (evt) {
/*@if (@_jscript) var target = event.srcElement; @else@*/
var target = evt.target; /*@end@*/
var node, data;
if (node = this.contains (target, 'A')) {
if (data = this.check (node)) {
this.parse (data);
/*@if (@_jscript) event.returnValue = false; @else@*/
evt.preventDefault (); /*@end@*/
}
}
},
contains : function (node, tagName) {
do if (node.nodeName == tagName) break; while (node = node.parentNode);
return node;
},
check : function (uri) {
return this.pointerPart.exec (this.uriReference.exec (uri)[9])[1];
},
parse : function (data) {
for (var d; d = this.associations.exec (data); ) {
this.find (top.frames, decodeURIComponent (d[1]), decodeURIComponent (d[2]));
}
},
find : function (frames, id, uri) {
for (var i = 0, I = frames.length; i < I; i++) {
if (frames[i].id == id || frames[i].name == id) {
frames[i].location.href = uri;
}
if (frames[i].frames.length) {
this.find (frames[i].frames, id, uri);
}
}
}
};
/*@if (@_jscript)
attachEvent ('onload', XFramesProcessor);
document.attachEvent ('onclick', XFramesProcessor);
@else@*/
addEventListener ('load', XFramesProcessor, false);
document.addEventListener ('click', XFramesProcessor, false);
/*@end@*/
XFramesProcessor = null;
/************************************************************************/
} )();