������Ȼפ��ФǤ����ΤǤ��ͤ���
[JavaScript] data��������URI�����ʲ����ǡ�����Base64�Ѵ�����ǰ�ʤ��� Internet Explorer �� data ����������б����Ƥ��ʤ��Τ����ѤǤ��ޤ���[��] HTML�ե������ʸ����Ȥ��Ʋ����ǡ�����������
ɽ���� IE6 �ǤϤ�������ɡ�Firefox ����OK��
����˴��Mac IE�Ǥ⸫��ޤ������ʲ���data:��������ˤ�륢��������ġ�
�פϡ�������ܤʤ鳰�˽Ф��Ƥ��ޤ��Ф����Ȥ������ȤǤ���inside out�ʤΤǡ�data��΢�֤���atad�Ȥ��Ƥ��ޤ���
atad.cgi#!/usr/local/bin/perl -T # # $Id: atad.cgi,v 0.1 2006/10/02 20:36:53 dankogai Exp dankogai $ # use strict; use warnings; use MIME::Base64; use CGI; sub error{ print <<"EOT"; Status: 400 Content-Type: text/plain @_ EOT exit(); } my $q = CGI->new; my $data = $q->param('data'); error "no data found" unless $data; $data =~ s{ \A data: }{}xo; # http://labs.cybozu.co.jp/blog/kazuho/archives/2006/01/url_base64.php # http://en.wikipedia.org/wiki/Base64#IRCu $data =~ tr{[]!*}{+/=;}; $data =~ s{ \A (.+?);(.+?), }{}xo; my ($type, $enc) = ($1, $2); error "unknown encoding: $enc" unless $enc eq 'base64'; print "Content-Type: $type\n\n", decode_base64($data); __END__
���Ȥϡ���������Ф������ǥ⤬��Ū�ʤΤǡ��֥饦���������å��Ϥ虜�ȳ����Ƥ���ޤ���Firefox��Safari�Ǥ�data:��http:�Ѵ����ʤ���ޤ������������ɽ������ޤ���
Client Source:window.onload = function(e){ // if (! IE ) return; var atad = 'http://www.dan.co.jp/~dankogai/cgi/atad.cgi?data='; var safe_b64 = function(str){ var result = ''; for (var i = 0; i < str.length; i++){ var c = str.charAt(i); result += ( {'+':'[' , '/':']', '=':'!', ';':'*'}[c] || c); } return result; } var elems = document.all || document.getElementsByTagName('*'); for (var i = 0; i < elems.length; i++){ var src = elems[i].getAttribute('src'); if (src && src.indexOf('data:', 0) != -1){ elems[i].setAttribute('src', atad + safe_b64(src)); //elems[i].setAttribute('src', atad + encodeURIComponent(src)); } } }
�ʲ���α����
- window.addEventListner()�ϻ�ǰ�ʤ���Mac IE 5�ǤϻȤ��ʤ��ä��Τ�window.onload()����ѡ�
- encodeURIComponent()��IE�Ǥ�̤���������������
Kazuho@Cybozu Labs: URL �� Base64URL �˥Х��ʥ�ǡ�������������Ϥ����Ȥ����ޤޤ���ޤ�����Υ�������1�Ǥϡ��Х��ʥ�ǡ������빽�ç¤ï¿½ï¿½ï¿½Ã¤ï¿½ï¿½Î¤ï¿½ hex encode ���ò¤±¤ï¿½ï¿½ï¿½ï¿½È¤ï¿½ï¿½ï¿½ï¿½ï¿½ base64 ���󥳡��ɤ��褦�Ȼפä��ΤǤ����� path �� query �� + �� / �Ȥ��ä�ʸ�������줿������ޤ���
�Ǥ�Ҳ𤵤�Ƥ���IRCu��Base64��Encode���ʤ����Ƥ��ޤ��� - ����ϥǡ�����PATH_INFO��ͳ���Ϥ����Ȥ����ΤǤ��������ޤ��ç¤ï¿½Ê¥Ç¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½È¡ï¿½pathĹ���פ�Apache���ܤ���Τǡ�data=data:...�Ȥ��ޤ�����
Enjoy!
Dan the Javascripting Perl Monger
���Υ֥����˥����Ȥ���ˤ�����������ɬ�פǤ���
��������������
���ε����ˤϵ��ĥ桼�����������Ȥ��Ǥ��ޤ���