IE限定だけど
<style>
b { color: expression((this.innerText=="hoge")? "blue": "red"); }
</style>
こういうexpression()のリファレンスサイトってないかな?
いろいろ実験してるんだけど、エラーダイアログの無限ループに入ったり
スクロールバーが興奮(?)したりして
いまいち実用レベルに持っていけないんだよね。
body { color: expression((confirm("black?"))? "black": "white"); }
これでconfirmの無限ループになるのは納得がいかん・・・
ユーザースタイルシートで
a { color: expression((location.host.match(/google\.com$//))? "green": ""); }
とかやれれば面白いと思ったんだけどな・・・
>>791 コンテンツに応じて色変えたりするだけなんだから、普通にonloadの
タイミングでdocument.getElementsByTagName()呼んで各要素をスキャン
して設定する方が安心じゃない。そうか、ユーザスタイルシートねえ。
bookmarkletにするという代替案もあるが…
>>791 無限ループっていうか、与えられた式を繰返し評価して
常に最新の結果を反映するのが expression だろ。
>>793 ふーんそうなんだ、しかしどういうタイミングで評価するの?
100%それにCPUを使うわけには行かないわけだから、評価するタイ
ミングが決まっているはずだろうと思うんだけど。
前どっかのスレで出てたねそれ。
その時やってみたやつが残ってた。
<style>
body{ background:expression(!window.a && alert("test"), a = "blue"); }
</style>
796 :
791:03/02/07 01:08 ID:???
>>792 web製作という意味ではそうなんだよね。
どうしてもローカルで使うJavascript限定になる。
body {color: expression((document.cookie)? "red": "") }
こんな指定ができるから「お?」と思ってね。
>>793 >与えられた式を繰返し評価
このタイミングっていつだろ。
<style>
body {
background-color: expression(document.getElementById("bg").value);
color: expression(document.getElementById("txt").value);
}
</style>
<body>
<input id=bg type=text value=silver>bgcolor<br>
<input id=txt type=text value=aa00ff>textcolor<br>
</body>
リアルタイムで入力した値に変わっていくんだよね。
もし100msごとにチェックとかだったらおよそ使えない代物だな・・
背景が黒か白かを選択(Win98, IE5.0)
<style>
body { background:expression(!window.a && (b = confirm("black")), (a = b ? "black" : "white")); }
</style>
ホストにgoogle.comを含むならアンカーの色を緑に
<style>
a { color: expression(!window.a && (a = location.host.match(/google\.com/) ? "green": "")); }
</style>
色々と出来そうだ。
↑の状態で5分ほど放置してたらいきなり不正終了した…
800 :
791:03/02/07 02:46 ID:???
おお、そうやるのか。
801 :
791:03/02/07 02:52 ID:???
基本的にはリアルタイムで処理するもんで、
処理を一回だけにして欲しい時は
a { color: expression(!window.a && (a = location.host.match(/google\.com/) ? "green": "")); }
これが定跡なのかな。
expressionは、画面を描画し直すたびに評価されるわけだから、
物凄く頻繁に呼び出されることになるぞ。
激しくパフォーマンスが低下するのでお勧めできない。
描画し直すたびに評価されるものってめちゃめちゃありそうだから
(!window.a)の評価が一つ加わる程度は大した事ないんじゃない?と楽観視してみる。
いまいちリファレンスが無いのは
誰もが一日で「こりゃ使えねぇ」と思うからか?
>>798はユーザースタイルシートの拡張(URLごとにスタイル指定)の
一つの方法だろうけど、めんどくさい・・・・。
body {
color: expression(
!window.a && (a =
location.host.match(/google\.com$/) ? "green":
location.host.match(/yahoo\.co\.jp$/) ? "red":
location.host.match(/2ch\.net$/) ? "blue":
"white" /* other sites */
)
);
}
>>796みたいな、文字入力するとリアルタイムで値が変わるのは面白いね。
>このタイミングっていつだろ。
こんなの試してみた。
color:expression(status=Number(new Date),'red');
何らかのイベントが発生するタイミングで再評価っぽい気がする。
# んで confirm とかやると onfocus/onblur の無限ループ、と。
expression
background-imageでやってみたら永久にダウンロードし続けますね。
確かに、カウントすると勢いが分かる。
body { color: expression(!window.i && (i = 0), status = i++, "black"); }
>>807 ちょっとうろうろするだけで数百。勢いが違うね。
ワンクリックで10カウントもされるんじゃタイミングもくそも無い気が・・・
まあ、expressionを使わずとも
ブラウザってもんはこのぐらいの勢いで何らかの評価をしているってことだろうけど。
使おうって気は十分萎えたよ。
809 :
Name_Not_Found:03/02/08 00:25 ID:UAcWjArP
JavaScriptのメールフォームで、送信を選ぶと警告文がでてくるのですが・・・。
暗号化がどーのとか。
どうしたら正常に送信できるのでしょうか?
それが回答しようのない質問だと思わないかなあ。どこのどういう
フォームなのよ?本当にJavaScriptの問題なの?なんでそう分かる?
ちゃんと説明してみれ。
>>810 ほっとけ。警告文が出ると書いてそのメッセージを晒さない。ただのアホだ。
ほっとけの顔も三度。
813 :
Name_Not_Found:03/02/08 15:09 ID:SEX3zG5G
>>813 うーん、
>>747 みたいにposition: absoluteを使うんじゃなくて?
メニュー表示のたびに下のコンテンツをreflowするのは遅そうだし
あんまり普通じゃないような気がするけど。
816 :
Name_Not_Found:03/02/09 08:11 ID:WcbIpcNB
>>815 はみ出さないようにするにはメニューを構成するdivを<table>...</table>の
中に入れてスタイルを適宜調整すればいいんじゃないの?座標を%で指定した
ければJavaScriptなんだから画面幅とか取得して自前で計算すればいいんじゃ
ないの?全部そゆふに直してくれというのは遠慮したいけど。
>>819 レスありがとうございます。
色々調べていますが、ツリーを展開したときに、動的にテーブルの縦枠が伸びるなどの仕様にしたいのです。
スタイルを適宜調整・・・とは、alignタグなどでということですか?
画面幅を取得して自動計算ですか・・・めんどうそうなので最終手段として考えておきます(苦笑
ただ、スクリプトの方で表示関係を処理してるみたいなので、動的なテーブル処理は難しそうですね。
なにかよさそうな方法はないものでしょうか・・・
818 :
Name_Not_Found:03/02/09 10:14 ID:93tY1euP
innerTextで文字列を書き込むと、<DIV>の上に改行が出来てしまいます。
何か回避策はないでしょうか?
ちなみに、<DIV>のかわりに<P>を使うとマージンが多めの改行、<span>だと改行されません。
どうにかブロック要素で囲みたいんですが…。
if(event.type == "click") {
comForm.item("icon").value = event.srcElement.id;
nowIcon.innerText = event.srcElement.alt;
pullDown.innerHTML = "";
}
以下HTML部分
<input type="hidden" name="icon" value="hoge">
<div>
アイコン<br>
<span class="pditem" id="nowIcon">ほげ</span>
<span class="pulldown" onclick="popup('icon');">▼</span>
</div>
var n=0,s=0;
var r=document.forms[0].area1.createTextRange();
r.moveStart("character",document.forms[0].txt1.value.replace(/\r/g,"").length-n);
r.moveEnd("character",s);
r.text = a+r.text+b;
r.select();
r.parentElement().focus();
※aとbはタグを示す(別で設定)
フォーム内で選択範囲の前後にタグを挿入したいのですが
どうしてもタグが一番最後に挿入されてしまい上手く行きません。
タグ自体は記述されているのでr.moveStartとr.moveEndの処理が出来てないみたいです。
選択範囲の前後に挿入さえできれば他の方法でも全然構わないので
なにか良い方法をご存知の方はお願いします。
820 :
Name_Not_Found:03/02/09 22:27 ID:Q3VFp49p
function test(){
window.open("","target");
document.frm.action = "test.cgi";
document.frm.submit();
}
<form method="post" target="target">
<input type="button" onClick:javascript test()>
という感じで作ったページで
たまに、ターゲットウインドウにtest.cgiが実行されずに
空のページが出来て、元々の自分のwindowにtest.cgiが実行されることがあるのですが
うまい回避方法とかありますか?
>>820 とりあえず。
<input type="button" onClick:javascript test()>
↓
<input type="button" onClick="test()" onKeyPress="test()" >
>>820 JavaScriptをOFFにしても見れるようにすべし。
824 :
820:03/02/09 23:18 ID:Q3VFp49p
いろいろ手を入れないといけないみたいですね、、
formの内容をpostで送りたい。
新しいwindowを開いて表示したい(ツールバーなどを消したwindowにしたいから)
というのがあるのです。
で、
順番として
window.open();
document.frm.submit();
と書くのがいい手段なのかが疑問になってきてまして(上記のように空のwindowが出たりする)
もっとスマートな方法を皆さん使ってるのかなと
よろしくお願いします。
>>819 これでなんで選択範囲が取得できるのかよく分からないんだけど。
MSのFAQを見ると選択範囲は DHTMEdit.DOM.selection.createRange()
とかで取れるようなことが書いてあるが(試していないけど)。
>>818 質問の意味がよく分からないのだけど。このコードだと
<span id="nowIcon">...</span>の中をinnerTextで書いて
いるよね。「どこに」改行ができて欲しいけどできないって?
>>817 なんだか言っていることの意味がよく分からないんだけど。
JavaScriptでやってるんだからテーブルを伸ばしたりするのは
中にノードを突っ込んだり消したりすればできるでしょ。Gecko/IE。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var elt;
function unpop() {
if(elt == null) elt = document.getElementById('d1');
elt.parentNode.removeChild(elt);
}
function pop() {
document.getElementById('d0').appendChild(elt);
}
</script>
</head><body onload="unpop()">
<table border="1" style="width: 80%">
<tr><th><div id="d0" onmouseover="pop()" onmouseout="unpop()">here...
<div id="d1" style="border: blue solid 2px; width: 100px; height: 200px">
test...
</div></div></th></tr>
</table>
</body></html>
>>821 >onKeyPress="test()"
配慮のつもりならキー判定は最低限の常識。
えてしてWCAGバナーが貼ってあったりするのが涙を誘うのだが
ご丁寧に return false; までしてくれるおかげで
ハマったら最後全てのキー操作が不能になる酷いリンクをよくみかける。
# そうか、あれは嫌がらせかw
>>824 窓ができ終わらないうちにsubmitが起きてしまうとダメ
なんじゃないの。窓開くときにonloadハンドラを指定した
表示は空白なHTMLを指定して、onloadハンドラでフォームを
submitするようにしたらどうかな。
830 :
818:03/02/10 00:36 ID:???
>>826 回答ありがとうございます。
改めて自分の質問を読み返してみると言葉足らずでした。すみません。
その後、問題は解決致しました。
質問の意図としては、改行する予定が無いのに勝手に改行してしまうので、
どうにか回避したい…という事でした。
<span>だとinnerText後の改行は回避できたのですが、レイアウト的にブロック要素で
囲みたいんだけどな…という事です。
改行されてしまう具体的な個所は、<input>と<div>の間です。
今回僕が採った回避策は、<input>と<div>の間のHTML側の改行を無くすという方法です。
つまり、
<input type="hidden" name="icon" value="hoge"><div>
アイコン<br>
・
・
・
という風に記述すると改行されなくなりました。
未だになぜこれで問題が回避されたのかわかりません。
……なぜでしょう??
831 :
Name_Not_Found:03/02/10 04:53 ID:w3ffbqPJ
WebProg板のこんなCGIを…ってスレで以下の質問をしました。
元に貯めこんでおいたテキストをランダムに表示するCGIってありますか?
出来ればランダムではなく
日付や時間などによって変わるのが欲しいです。
表示できるテキストの量は改行が可能で100文字以上。
もしCGIでなくても出来る場合などは
適切なスレへの誘導をお願いします。
と、書き込んだところ。ご返答は
>>303 JavaScript
との事でした。
Javaについてはあまりよく知らないのですが…
トクトクプロフェッショナルというレン鯖を使っていて
サービス内容にJavaがついてないのですが…使えるのでしょうか?
>>831 まずJavaとJavaScriptは別のものであることを納得するまで勉強
してきてください。でないと回答に入っても粉糾するだけだから。
だけじゃ何なのでやりたいことについて確認しますが、100文字以上
の溜め込んでおいたテキストが何個あるんですか?1000個とかだと
100文字ランダム表示するために1000000文字毎回送ることになるので
JavaScriptでやるのは勧められません(その場合CGIでしょう)。100個
なら許されると思う。
>>830 その<input type="hidden">の前はどうなってるか見せてくんないと。
にしてもJavaScriptの話題じゃああんまりないような気もする。
>>834 うーん、JavaScriptでやるってことはテキスト全部持って
行ってランダムに選ぶんでしょ?そうじゃない方法って
結局サーバ側で選別するしかないじゃん。もしかしてJavaScript
っていってもASPとか?それはWebProg板だよねえ。
無理やりクライアント側 JavaScript でやるとしたら
str = 'ほげ'; ってだけの内容の js ファイルを好きなだけ用意して
そのうち一個を乱数で選んで取得するとかそのくらいじゃないだろうか。
なるほど、バラバラのファイルにしといてランダムに取るという
手もあったか。
838 :
Name_Not_Found:03/02/10 13:26 ID:1xGWDdaL
windowsのIEではデフォルトのフォントを
インターネットオプション→全般→フォント
で設定することができますよね。
ここで設定されたfont-familyをJavaScriptで知ることはできませんか?
<BODY ID="foo">
<BUTTON onclick="alert(document.all.foo.style.fontFamily)"
とかやってみても、なにも入ってないみたいです。
又、URLを指定せずにwindow.openでウインドウをひらいてdocument.writeで中身を書くと、
このデフォルトのフォントが適用されないのですが、これはなぜでしょうか?
デフォルトのフォントが使われるようにするにはどうすればいいでしょうか?
そのstyleのとこにはCSSで指定した値が入るのが基本だから、CSSで
何も指定してない(当然そのためのデフォルトですよね)以上空っぽ。
うーん、そのdocument.writeで書いているのはHTML? HTMLでデフォルト
のフォントで表示される短いページを用意してwindow.open()ではそれを
一旦表示させ、その後で中を書き換えるっていうのはどうかな。その
時はdocument.write()使っちゃだめよ、クリアされちゃうから。
840 :
頭悪くてすいません:03/02/10 22:45 ID:oW8qdjOQ
フォームに日付をデフォルトで入れておきたいのですがsetIntervalを使わずにやる方法ありませんか?
下のは私の回りくどいやりかたです。初心者質問すいません、どうかご教授お願いいたします。
<html>
<head>
<title></title>
<script language="JavaScript"><!--
function myFunc(){
xx = new Date();
yy = xx.getYear();
mm = xx.getMonth() + 1;
dd = xx.getDate();
if (yy < 2000) { yy += 1900; }
if (yy > 2000) {yy= yy-2000; }
if (mm < 10) { mm = "0" + mm; }
if (dd < 10) { dd = "0" + dd; }
Mydate = ("0"+yy + mm + dd);
document.F1.T1.value = Mydate;
}
// --></script>
<FORM NAME="F1"><INPUT TYPE="text" NAME="T1"><BR></FORM>
<script language="JavaScript"><!--
setInterval("myFunc()",1000);
// --></script>
</head>
<body>
</body>
</html>
841 :
840:03/02/10 23:23 ID:???
<body onload = すいません。寝ぼけてました>
>>838 上の質問
alert(document.documentElement.currentStyle.fontFamily);
下の質問
var q=open();
alert(q.document.charset); //文字コードがunicodeになってる。
q.document.charset='shift_jis';
alert(q.document.documentElement.currentStyle.fontFamily);
>>842 currentStyleすごすぎ。
スタイル指定が無い場合、ブラウザのデフォルトスタイルを返すんだね。
<script>
var obj = document.documentElement.currentStyle;
var a = new Array(); var j = 0;
for( var i in obj ){
s = new String(i);
while( s.length < 25 ) s += " "; // インデント
a[j++] = s + ": " + obj[i];
}
a.sort( new Function( "n1", "n2", "if( n1 < n2 ) return -1; else return 1;" ) ) // Ascii順
document.write( "<pre>" + a.join("\n") + "</pre>" );
</script>
CSS属性一覧?
844 :
838:03/02/11 14:43 ID:mA+kVWIj
>>842 ありがとうございます。うまくいきました。
このcurrentStyleっていうのはIE5以降のIE独自のobjectと理解していいですか?
845 :
817:03/02/11 20:56 ID:???
>>845 だから展開する/しないをvisibilityの操作だけでやるとテーブルの大きさを
伸ばしたり縮めたりすることはできないんで、visibilityを変更する代わりに
その要素をドキュメントツリーに挿入したりそこから削除するんだろうね。
test
<A href="
http://www.2ch.net/" target="_blank">2ch</A>
っていうリンクがあるとします。
そのリンクにマウスを当てるとポップアップさせたいのですがどうすればいいのかわかりません。
sky.sannet.ne.jp/masapine/java_link8.html
見つけたのですが、これだとポップアップさせる窓がHTMLファイルが指定できません。
どうすればできるのでしょうか?
849 :
Name_Not_Found:03/02/11 23:11 ID:dx72fp9c
>>848 そういうウザいのはやめた方が身のためだと思うけどね…
<a href="..." onmouseover="window.open('HTMLファイルのURI', '_blank')">2ch</a>
はじまして!質問なのですが、テーブルの背景に画像を使う際に、その画像にJavascriptで加工をすることは可能でしょうか?
背景画像に、水面効果のあるJavascriptを使おうと思ったのですが、
実際に書こうと思ったら、わからなくなってしまって・・・(;>_<;)
ちなみに、水面効果のタグは、某所から借りた↓です。
<center>
<IMG src="*.gif" style="POSITION:relative;TOP:0px;LEFT:0px; filter:flipV(enabled=1) alpha(opacity=80,style=2,finishOpacity=50,) wave(add=0,freq=0,lightstrength=50,phase=60,strength=10)" name="myText2">
</center>
<SCRIPT LANGUAGE="JavaScript">
<!--
isou=0;
function mywave(){
isou=(isou+10)%100;
myText2.filters["wave"].phase=isou;
setTimeout("mywave()",50);
}
mywave();
//-->
</SCRIPT>
ちなみに、タダ単にbodyタグのbackgroundに加工することは可能みたいなのですが、
それを応用しようと思っても、スキルが足りなくてダメでした・・・
よろしければ、ご指導よろしくお願いします。
いちおう、bodyタグのbackgroundを加工するscriptは↓です。
<script language="JavaScript">
<!--
var bgOS = 0;
var bgOB = eval('document.body');
function SlBg(Saidai) {
bgOS = bgOS + 1;
if (bgOS > Saidai) bgOS = 0;
bgOB.style.backgroundPosition = "0 " + bgOS;}
var ST = window.setInterval("SlBg(100)", 1);
-->
</script>
853 :
Name_Not_Found:03/02/12 03:07 ID:t4Vu1yPh
質問です。
<textarea id="result">があったとして、
中の文字列をコピーした時点で自動消去することは可能ですか?
oncopy="this.value=''; return true"では、先に消されてしまってコピーできません。(当然ですが)
どうか助けてくれなさい。
854 :
853:03/02/12 03:09 ID:???
ちなみにローカルで自分だけが使う物なので、Win+IE6限定でよろしい。
>>848 ポップアップの中身を
<div><iframe id="pop" src=""></iframe></div>
としておいて
document.getElementById("pop").src="HTMLファイルのパス"
とやる方法もあり。
857 :
856:03/02/12 05:07 ID:???
勘違いしてた。
選択文字列をコピーしたのち、textareaにある文字列を全部消去なんだ。
<script>
function sourceCopy(obj){
s = document.selection.createRange().text;
if(s.length > 0){
clipboardData.setData("Text", s);
obj.innerHTML = "";
}
}
</script>
<textarea oncopy="sourceCopy(this)">
コピーしたら全文字列消去</textarea>
何に使うんだろ…
859 :
853:03/02/12 12:54 ID:???
できました。
他にも使い回しが効きそうなので助かります。
さんきぅでした。
860 :
853:03/02/12 12:58 ID:???
某DOSベースのアプリに送るコマンドを作るスクリプトを組んでました。
次々処理したい時、前回の結果が勝手に消えてくれると便利かな、と。
# コマンドプロンプトに直接送る方法がわからないのでコピペしてます。
861 :
Name_Not_Found:03/02/12 14:56 ID:/ROpRUnL
>>861 そのプログラムのソ−スを読めば分かるじゃん。
プロクソミトロンなら。
>>861 こうかね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>???</title>
<style type="text/css">
#i0 { visibility:hidden; z-index:5; position:absolute;
top:10%; left:10%; width:80%; height: 80% }
</style>
<script type="text/javascript">
function pop(uri) {
var elt = document.getElementById('i0');
elt.src = uri; elt.style.visibility = 'visible';
}
function unpop() {
document.getElementById('i0').style.visibility = 'hidden'
}
</script>
</head><body>
<p><a href="#" onmouseover="pop('
http://www.yahoo.com/')"
onmouseout="unpop()">pop<iframe src="about:blank" id="i0">?</iframe></a></p>
</body></html>
866 :
Name_Not_Found:03/02/12 18:34 ID:GBJhjvX5
画像をクリックすると別窓で表示(メニューバー等一切無し)させたいのですが
どうしても画像の上、左に余白が空いてしまいます。
こういう場合ってOnClickで指定するのは直接画像ではなく
HTMLの方が良いのでしょうか?
解決方法があればお願いいたします。
>>866 あんま関係ないけど、そういうのはスクリプトがOffでも表示されるようにしてくれ。
<a href=a.jpg target=_blank onclick="with(window.open('','','toolbar=0').document){
write('<body style=margin:0><img src='+this.href+'></body>');close()}return false">a</a>
869 :
Name_Not_Found:03/02/13 00:16 ID:6sNytMTh
フォームの入力内容を
CGIに渡して別ウィンドウで開きたいんですがどうすればいいのでしょうか?
<script type="text/javascript">
<!--
function OpenWin{
win=window.open("", "newwin", "width=400,height=300";)
}
// -->
</script>
として、
<FORM METHOD="POST" ACTION="form.cgi" onsubmit="OpenWin">
じゃだめなんですよね。
<INPUT TYPE="submit" VALUE="送信" onclick="OpenWin">
だともっとおかしいような・・・・。
さっぱりわかってない初心者なんですがどこ調べてもいまいちわかりにくかたんでここで質問させてい
ただきます。
HPのオープニングに2枚のFLASHアニメ(SWF形式)を順番に表示させてから少し待ってトップペ
ージにジャンプするJAVAスクリプトが欲しいです。
setTimeout();がどうこうという所で行き詰まってて、HTMLでFLASHを表示してJAVAスク
リプトでアニメ終了まで時間待ちという形をとってみたんですが全く待ちもせず一度に全部表示してし
まいます。レイアウトは最初に1枚目の画像を画面中央に表示。終了までまって消去。次の画像も中央
に表示。終了したら1秒待ってトップページにジャンプとい感じです。
よろしくお願いします。
>>869 <form ... target="_blank">とかでどお。
>>865-868 別に自分のコードが優れているとも何とも思ってないんで、
ぜひもっといいコード貼ってよ。勉強させてもらうから。
>>870 だから現象だけ説明されても回答しようがないだろ。ソースの
要点を貼ってみなってば。
いま分割でカキコします。すんません
<html><head>
<meta http-equiv="Content-Type"
content="text/html; charset=x-sjis">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>無題 標準ページ</title>
</head>
<body bgcolor="#000000" text="#FFFFFF">
<p align="center">
<OBJECT classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000"
codebase="
http://active.macromedia.com/flash5/cabs/swflash.cab#version=5,0,0,0"
きたない文ですんません。根本的に勘違いしてそうで怖いんですが・・
そのclear()ってのは何よ?これでどうして表示が切り替わるつもり
なのか説明してみない?
clear()で画面消去ができると書いてあったなんですが別の言語ですか
881 :
Name_Not_Found :03/02/13 02:07 ID:rrU3O0FT
「あるリンクをクリックすると登録してある複数のURLからランダムで
選ばれてジャンプする」というのはありますか?
ポイントは最初のリンクテキスト(画像)は同じものを常に表示させたいことです。
要するににクリックして当たりペ0ジが出る確率は1/10で、
それ以外は広告ページというのを作りたいんです。
お願いします。
882 :
Name_Not_Found:03/02/13 03:46 ID:IE7FQjQp
883 :
Name_Not_Found:03/02/13 05:47 ID:pomUrXGw
少し説明が長くて申し訳ありませんが、どうしても解決できません。
どなたかお助けください。
クライアント側の共有フォルダの中にあるファイルを開いたり、ファイル名を表示させるexeがサーバ側にあります。
HTML内に<input type="file...>というタグがあり、ファイルをアップロードできるようになっています。
ここでアップロードしたファイルの名前を変数に格納して、前述のexeにJavaScriptを使って渡すと特定の文字だけ化けてしまいます。
化ける文字はShift-JIS16進数で表した時に、2バイト目に0x5Cがある文字です。5Cをエスケープ文字と認識してしまうみたいです。
JavaScriptを使わずに渡した場合は化けません。
escpae()はブロウザやバージョンによって動作が違うので、IE6だとUnicodeに変換してしまうので、うまく利用できません。
ちなみに、escpae()を使用すると、今度はカタカナが全て、文字化けしてしまいます。
どうしたら、この問題を解決できるでしょうか?
JavaScriptで、文字をShift-JISの16進数に変更するのはどうしたらいいのでしょうか?
数値を指定の進数に変換する関数はありますが、文字の場合はどうすればいいのでしょうか?
長々とすみませんでした。
>>883 //与えられた文字列の1文字目の16進Shift_JISコードを返す
execScript('Function VBASC(s)\nVBASC=HEX(ASC(s))\nEnd Function','vbs');
alert(VBASC("ソ"))
>>883 その0x5cを含む文字だけ文字コード調べて「%xx%5c」と書く
のはどう?読みにくいけど一番簡単かも。
>>885 そのための質問なんじゃないの?
>JavaScriptで、文字をShift-JISの16進数に変更
887 :
Name_Not_Found:03/02/13 09:45 ID:pomUrXGw
883です。皆さんありがとうございます。
私も885さんのアイディアと似たようなことを思ったんですが、文字を16進数のShift-JISにすることができません。
escape()を使うと、
IE6とOpera6では16進数Unicode、
NN7では16進数Shift-JISコード、
を吐き出すというふうに、動作結果が違うんです。
escape()を使った方がいいのでしょうか?
それとも、他に16進数にするやり方があるのでしょうか?
>>887 手で(コード表で)調べろという意味だったんだけどな。
1文字だけ調べてあげるからその文字を書いてみ。
>>881 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var a = ['
http://www.goo.ne.jp','
http://www.2ch.net','
http://www.ntt.com'];
function randomjmp() {
location.href = a[Math.floor(Math.random()*a.length)]; return false;
}
</script>
</head><body>
<p><a href="
http://www.yahoo.com" onclick="return randomjmp()">test</a></p>
</body></html>
>>879 別の言語のようですな ^_^; そもそもすべての<script>...</script>は
連結されて実行されるんでchange_Time()を2重に定義しても無意味でしょ。
<script>...</script>を分けて意味があるのはdocument.write()するときとか
だけ。おまけにchange_Time()を呼び出すところがないし。
たぶん素直な技としては<body onload="setInterval(change_Time, 100)">
とかして定期的に呼び出すようにして、その中で呼び出された回数を数える
かFlash Pluginのメソッド呼んでムービー再生中か調べるとかして、ムービー
切り替えて、2つ目が終わったらlocation.hrefに行き先を入れてジャンプする。
Flash PluginをJavaScriptから使う場合の情報はこちら
ttp://www.macromedia.com/support/flash/publishexport/scriptingwithflash/ 自分はFlashやらないんでそれ以上は試したことなし。
ひとまずそのFLASH PLUGINを試してみます。
ありがとうございました。過程と結果も報告させてもらいます
>>879 JavaScript1.0にclear()はあったけど、
open()でも似たような効果を出すから1.1で削除されたそうな
894 :
frame:03/02/13 15:37 ID:bKKKVITd
menuフレームのボタンでmainフレームを印刷したく、下記のように書いたんですが、実行すると
エラー: 'parent.main' は Null またはオブジェクトではありません
と出ます。どなたか解決策をお教えください。
*スクリプト部*
<script language="JavaScript">
<!--
function PrintMainFrame(){
parent.main.focus();
parent.main.print();
}
//--></script>
*HTML部*
<input type="button" name="insatsu" value="印刷" onClick="PrintMainFrame()">
印刷出来るが。
<frameset cols="60,*">
<frame src="hoge.html" name="sub">
<frame src="hoge2.html" name="main">
</frameset>
でhoge2.html印刷
>>893 おお、そうなの。勉強になるなあ。でもopen()で自ページクリア
しちゃうとJavaScriptも消えて止まっちゃうよねー。
>>894 フレームの切り方が問題になるということを認識してないでしょ。
フレーム切ってるHTMLを貼ってみれ。
898 :
frame:03/02/13 17:19 ID:pqNYfPri
>>895 環境が悪いのでしょうか?
Windows2k+IE6とwindows2k+Sleipnir
なんですけど・・・。
>>897 こちらです。
<%@Language="VBScript" %>
<HTML>
<HEAD>
<TITLE>システム</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
</HEAD>
<FRAMESET COLS="150,*" ROWS="*">
<FRAME SRC="left.asp" NAME="menu" SCROLLING="NO" NORESIZE>
<FRAME SRC="./kinmu/timecard/timecard.asp" NAME="MAIN">
</FRAMESET>
<NOFRAMES>
<BODY>
</BODY>
</NOFRAMES>
</HTML>
NAME="MAIN" -> NAME="main"
>>899-900 JavaScriptでは、と補足しておく。
# HTML側では name 属性は case-insensitive なので。
902 :
Name_Not_Found:03/02/13 23:50 ID:jiC/6FKo
あほですいません。
新しく開いた子ウィンドウのフォームから
CGIにデータを渡し、
ついでに子ウィンドウを閉じるには
どんな風に書けばよいのでしょうか?
903 :
Name_Not_Found:03/02/13 23:51 ID:jiC/6FKo
たびたびすいません。
新しく開いた子ウィンドウのフォームから
CGIにデータを渡し、
親ウィンドウに結果を表示して、
ついでに子ウィンドウを閉じるには
どんな風に書けばよいのでしょうか?
です。
>>1 それが分かってれば質問する必要ないじゃんバーカ
905 :
Name_Not_Found:03/02/14 00:14 ID:FU0dZdX+
889さん、ありがとうございます。
文字化けする文字は16進数のShift-JISで表した時に5Cで終るもので、「能」(945C)、「表」(955C)などです(一応2つ書いちゃいました)。
<INPUT TYPE=file NAME="upload_file_name">
でアップロードしたファイル名にそれらの文字が含まれていると、
txt = document.aa.upload_file_name.value
に格納して渡す時に化けてしまいます。
できれば、テーブルを作成して…というやり方は避けたいのですが、無理でしょうか?
やっぱりわかりません。というか英文読めません。
誰か
>>870のHTMLとスクリプト書いていただけませんか?
907さん
すみません、884試してません。
JavaScriptじゃないと思ったので。
これはVBなのでしょうか?
JavaScriptと一緒に使えるということですか?
VBはやったことないんですが、もしそうなら、勉強してみたいと思います。
909 :
Name_Not_Found:03/02/14 01:19 ID:IsePXyt1
このスクリプトを見つけたのですがURLはどこに挿入したらいいのですか?
あるリンクをクリックすると当たりページが1/10であとはハズレページが
表示されるというものです。
配列にURLを格納し、リンクがクリックされたら乱数を発生させて配列の中
からランダムにURLを選択してジャンプします。
<Script>
var url = new Array;
url[0] = "0.html";
url[1] = "1.html";
url[2] = "2.html";
url[3] = "3.html";
url[4] = "4.html";
url[5] = "5.html";
url[6] = "6.html";
url[7] = "7.html";
url[8] = "8.html";
url[9] = "9.html";
function click() {
var ran = Math.floor(Math.random()*url.length);
location.href = url[ran];
}
</Script>
<A HREF="JavaScript:click()">リンク</A>
>>909 >配列にURLを格納し、リンクがクリックされたら乱数を発生させて配列の中
>からランダムにURLを選択してジャンプします。
ここまで書いておいて解らない香具師にはどうやって教えていいか解らない。
自分なりに考えて色々いじってみなよ。最初のうちはあてずっぽでいいから。
907さん
すみません、884試してません。
JavaScriptじゃないと思ったので。
これはVBなのでしょうか?
JavaScriptと一緒に使えるということですか?
VBはやったことないんですが、もしそうなら、勉強してみたいと思います。
912 :
Name_Not_Found:03/02/14 02:44 ID:SiVCyT/v
フォームに入力されたデータを、
子ウィンドウに送信(submit)するには、
どうするの?
<form target="子ウィンドウの名前">
>>911 VBscriptをJavascript内で使うためのメソッド>execScript()
IE限定。
execScript('Function VBASC(s)\nVBASC=HEX(ASC(s))\nEnd Function','vbs');
を書いておけば
VBASC("ソ")で呼び出せる。戻り値は16進Shift_JISコード
「IEでSJISエスケープするには?」ってFAQかもね。
916 :
frame:03/02/14 08:49 ID:XL+7Smmd
>>899-901 ありがとうございます。さっそく大文字小文字をそろえてみました。
でも、同じエラー<'parent.main' は Null またはオブジェクトではありません>が出てしまいました。
framesetの方にあまり手を加えると怒られるので、scriptの方をを大文字にそろえてしまったんですが。
<script language="JavaScript">
<!--
function PrintMainFrame(){
parent.MAIN.focus();
parent.MAIN.print();
}
//--></script>
917 :
914:03/02/14 08:51 ID:???
execScript() の説明で「第二引数にvbsを指定したら」が抜けてた。
918 :
frame:03/02/14 09:11 ID:XL+7Smmd
小文字にもそろえてみました。
私の持ってるデータが古かったみたいで、今はNAMEは小文字だったそうです。
ですので、scriptも小文字にそろえなおしたんですが、やはり同じエラーが出ました。
914さん、884さんありがとうございました。
すごい!とても勉強になりました。
execScript()がJavaScriptのメソッドだって、何で気が付かなかったんだろう?
すみませんでした。
IEはこれで対応して、NNはescape()を使えば解決できそうね。
試してみます。
920 :
Name_Not_Found:03/02/14 09:42 ID:c1k21sM+
商品を注文をするフォームでテキストボックスに
"0"が入力されると警告を出すようにするか、
"0"を入力不可能にするようになんとか出来ないでしょうか?
警告を出すことはできるに決まっているが。調べたの?
922 :
Name_Not_Found:03/02/14 10:00 ID:c1k21sM+
警告を出す事は知っているのですが
0を入力すると警告を出す方法がわからないのです。
>>920 テキストボックスに数値の 0 が入力されたら即警告を出したいのか、
たとえば数量を記入するテキストボックスに 0 としか記入されずに、
送信ボタンが押されたら警告をだしたいのか。
どう考えてるの?
>>920 さらに聞くなら「0」1文字の場合?「00」みたいに数値の0になるもの
すべて?「」みたいに空っぽの場合も数値に変換すると0になるが。
<input type="text" onchange="if(this.value == '0')alert('??')">
こんな感じ?
>>918 まあ順番にしらべようよ。
alert(window.parent);
alert(window.parent.frames);
alert(window.parent.frames.main);
alert(window.parent.frames.main.focus);
これ順番に試してみたら?
execScript('Function VBASC(s)\nVBASC=HEX(ASC(s))\nEnd Function','vbs');
を使っても16進Shift-JISになりませんでした。
どんな文字でも、"3F"を返します。
927 :
frame:03/02/14 13:21 ID:XL+7Smmd
>>925 試してみました。
<script language="JavaScript">
<!--
function PrintMainFrame(){
alert(window.parent.frames.main);
//parent.main.focus();
//parent.main.print();
}
//--></script>
上の3つはalertで、4つ目はエラーでした。メッセージは以下のとおりです。
[object]
[object]
undefined
'window.parent.frames.main.focus' は Null またはオブジェクトではありません
>>926 VBASCに渡してる文字列が既に化けている雰囲気。
930 :
ディーゴ:03/02/14 17:18 ID:LONYiCz0
JAVAScript内でウィンドウを出し、
そのウィンドウが閉じるのを待ってから、
次の処理に移るにはどうしたら良いですか?
<SCRIPT>
.
.
window.open("AAA"); このウィンドウが閉じたら
.
.
alert("pepe")これを出す
.
.
</SCRIPT>
みたいな。
931 :
Name_Not_Found:03/02/14 17:19 ID:tojYdR6x
setTimeout で関数名の部分に関数内メソッドを指定するとエラーになります。
例えば
setTimeout("this.myView()",100);
などと記述するとエラーになるのです。
ちなみに this.myView(); ではエラーにはなりません。
メソッドであり関数でないためにエラーになるのでしょうか?
関数やらオブジェクトやらメソッドやらプロパティやら
その辺の用語の概念がよくわかっていないずぶの素人ですが
よろしければどなたか教えてはくれませんか?
>関数内メソッド
なんじゃそら?
933 :
Name_Not_Found:03/02/14 17:28 ID:tojYdR6x
>関数内メソッド
オブジェクト内メソッドかも。
メソッド→関数、プロパティ→変数
オブジェクトを定義して、その中でsetTimeoutを使ってメソッドを指定すると
原因不明のエラーになる、ということです。多分。
935 :
Name_Not_Found:03/02/14 17:43 ID:tojYdR6x
>>930 呼び出し元のファイル
<script language="JavaScript">
<!--
function openNewWindow(){
window.open(URL);
}
function closedWindow(){
alert("pepe");
}
//--></script>
openNewWindow() は適当に呼び出しといて
で、呼び出されるファイルには
<body onunload="window.opener.closedWindow();">
ってこういう書き方でいいのかな
>>931 結果だけ言うと setTimeout の引数に文字列で与えたコード中の this は
window オブジェクトを参照する。
だからオブジェクトのメソッドで setTimeout なんか使っても
呼出元のオブジェクトを参照することができない。
setTimeout の引数に文字列で与えたコードは
setTimeout の呼出コンテキストから独立しているんだよ。
だから this みたいにコンテキスト依存するものを
引数の文字列に使っても呼出したスコープの this を参照しない。
呼出元オブジェクトを参照する必要があるなら
ローカルスコープの変数を参照できる関数を作成して setTimeout の引数に指定しる。
var o=this;setTimeout( function(){o.myView()}, 100 );
そうすれば関数はその呼出コンテキストで宣言された変数を参照できる。
938 :
Name_Not_Found:03/02/14 17:51 ID:tojYdR6x
>>937 ありがとうございます。少しわかったような気になりました。
やってみます。
939 :
Name_Not_Found:03/02/14 18:18 ID:tojYdR6x
できました! ありがとうございました。
this の代わりに呼び出し元オブジェクトの名前を使って
メソッドを指定してみてもダメだったのですが
オブジェクトの名前を外部でローカル変数として
定義していたのが悪かったようです。
グローバル変数としてオブジェクト名を定義したら問題なく動作しました。
お騒がせしました。
…言葉の使い方が適切かどうかちょっと不安。
940 :
930ことディーゴ:03/02/14 18:49 ID:LONYiCz0
おいらもかまってクレヨン
>>940 お、IDが「ロンリーで行くぞ」ですな。
>>940 「JavaScript ページを出る」でぐぐる。
>>940 | |
| |∧∧
|_|・ω・`) 漏れの書いた
>>936じゃダメでつか?
|鬱|o o.
| ̄|―u'
""""""""""
944 :
ディーゴ:03/02/14 19:41 ID:LONYiCz0
>>943様様
見逃してたヨ・・・
それで行ってみます。
ベリーサンクス
945 :
ディーゴ:03/02/14 19:41 ID:LONYiCz0
946 :
Name_Not_Found:03/02/15 02:21 ID:U9++RDQT
フレームが上下2つに分かれていて
上フレーム名がup
下フレーム名がdownとします。
上フレームにはボタンがあり、
<INPUT onclick=start() type=button value=" はじめ ">
ボタンを押すと
下フレームのフォーム内
<FORM method=post name=watch>
<INPUT name=box size=10 style="FONT-SIZE: 60pt;">
</FORM>
に文字が表示されるようにするのには
どうしたらよいですか?
start()関数が、これだとうまくいかないです。
だれかお助けを。
function start()
{
parent.down.document.watch.box.value = " こんにちは " ;
}
don't name it start
948 :
946:03/02/15 02:42 ID:U9++RDQT
<INPUT onclick="start();" type=button value=" はじめ ">
でもダメなんですけど
>>928>>929 さん、ありがとうございます。
シンプルに下記のようにテストしました。
どんな文字を入れても「3F」が返ってきます。
execScript('Function VBASC(s)\nVBASC=HEX(ASC(s))\nEnd Function','vbs');
var pp = VBASC("表");
alert(pp);
勉強不足でVBのことはよくわからないんですが、ASC(s)という部分できっとASCIIに変換してるんだと思います。
シングルバイトの文字を引数として渡すと、例えば「i」を渡すと「69」を返します。
ASCII表で確認すると、「i」は69で合っています。
ちなみに、3Fは「?」です。
ASC(s)を削除して、直接HEX()にダブルバイトの文字を渡すとエラーが出ます。
>>950 そのscriptを試したファイルのエンコードが
UTF-8の時に「3F」になる模様。
Shift_JISで保存したほうがよさげ。
>>951さん、ありがとうございます。
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
というタグはは元々あったんですが、私のマシンでは「3F」と出ていました。
<script>にcharset="Shift_JIS"という属性を追加しましたが、結果は同じでした。
環境の違いでしょうか?
>>952 そのファイルを開いた状態で新たに「名前をつけて保存」を実行して
文字コードを「日本語(シフトJIS)」にして保存。
その保存したファイルを開くとどう?
>>953 ありがとう!
>>953 >>954 様
してありました。でも、3Fです。
もう1回してみましたが、ダメですー。
では、皆さんのところではちゃんとShift-JISのコードが表示されるんですね?
うーん。
>>953 >>954 様
今、何人かの友達に試してもらいましたが、皆「955C」と出たそうです。
私のだけ何かおかしいんですね。
>>955 新たに
<script>
execScript('Function VBASC(s)\nVBASC=HEX(ASC(s))\nEnd Function','vbs');
var pp = VBASC("表");
alert(pp);
</script>
だけをファイルに記述して保存してみては?
それでダメならとりあえず環境をかいてみよう。
win2000sp3+IE6sp1では成功する。
ただし
>>951の通りUTF-8で保存されていると失敗する。
環境は
英語版 Windows 5.00.2195 Service Pack 3
IE6.0.28
です。
>>958 文字コードを「日本語(シフトJIS)」にして保存
↑
この操作はやってみたの?
>>958 他に試せるのはこのぐらいか。
execScript('Function VBASC(s)\nVBASC=HEX(ASC(s))\nEnd Function','vbs');
var pp = "表";
alert(VBASC(unescape(escape(pp))));
961 :
Name_Not_Found:03/02/15 12:50 ID:vPETetED
JavaScriptで、ID名やクラス名を関数に渡したいんですが、上手くいきません。
例えば
<img src="〜" ID="ID_01" onmouseclick="Click("ID_01")">
で、スクリプト側で
function Click(temp)
{
aleat(document.all.temp.src);
}
とかやると、もろに「temp」という名前のIDを探しに行ってしまいます。
コレをなんとか関数側でtempの中身をIDとして処理させることはできないでしょうか…?
ド素人な質問でごめんなさい・・・
>>961 元のスクリプトに表記ミスはないよね?
onclick="Click(this.id)"
alert(document.getElementById(temp).src)
document.allはIEだけではあるがもし使いたいなら
alert(document.all.item(temp).src)
963 :
961:03/02/15 13:41 ID:???
ありがとうございます! item(temp)で解決しました!
多謝!!!!
厨房な質問ですみませんが、IEで表示された画像を任意の大きさまで10%づつ縮小させたいと思い
インターネットショートカットのURLに javascript:document.body.style.zoom*=0.9;eval(); と書いて
お気に入りに登録してみたのですが、クリックしても全く反応しません。どこが間違ってるのでしょうか?
>965
書くべきスレッドを間違っています
商品を注文をするフォームでテキストボックスに
"0"が入力されると警告を出すようにするか、
"0"を入力不可能にするようになんとか出来ないでしょうか?
>>967 取り合えず前者は出来ます。
まぁ、JavaScriptが無効なら無力なのでサーバサイドで対処した方が良いかと。
うむ、こいつに違いなさそうだな
971 :
山崎渉:03/04/17 15:55 ID:???
(^^)
972 :
山崎渉:03/04/20 04:01 ID:???
∧_∧
( ^^ )< ぬるぽ(^^)
ここまだ生きてるのな
定期的に埋めに
html化させて
過去スレ一覧を整然と
19がもう出てますよん
この板の住人、埋め立てに興味なさすぎ…19かよ。
あと20だし、他板の連中呼び込めばなんとか…
でも荒れるからやだな
999まで埋めても、誰も1000ゲットしてくれない…
あり得るな
ほかにもあるのかよ
しかも999止まり…
たしか999でdat落ちしていたスレを前見かけたな
あと少し
10分経っても999のまま…ある意味すごい。
千里の道もあと10歩強
1000直前でageればきっと埋まるな
とか言っているうちに一桁台に…
>>990 その手があったか!今度からそうします…
プロトタイプベースのOOで遊ぶ…
こんなのが動くと知った日は相当に驚いた。
(function(msg){alert(msg);})("test");
でも使い道ないな
二次元配列じゃない…
alert([5,4,3,2,1][0]);
正規表現…
alert(/ok/ig.exec("ookk"))
セミコロンの自動挿入は…
目標シナリオ:
998=このレス
999=age
1000=埋め
999 :
Name_Not_Found:03/05/28 00:13 ID:GawvXHQW
それではどうぞ
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。