- PR -

SmartNavigationをTrueにするとLinkButtonを押した際にフォントが変わる

投稿者投稿内容
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2006-11-14 14:37
じゃんぬねっとさん、毎度毎度本当にすみません。
本当に助かります。
>ポストするときに「今の位置」をとるように変更してみましょう。
document.documentElement.scrollTop=document.getElementById("ボタン名").style.top

こんな感じでいいんですよね?一応移動はできました。
ただ・・・。ポストする前の完全な位置には戻らないのは仕方ないものなのでしょうか?諦めるしかないんですよね?


かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2006-11-14 15:07
引用:

カタナさんの書き込み (2006-11-14 14:37) より:
ただ・・・。ポストする前の完全な位置には戻らないのは仕方ないものなのでしょうか?諦めるしかないんですよね?


body要素のmargin, paddingの分だけ元の位置とずれたのかもしれません。
margin, paddingの分だけ減らしてやれば、元の位置に戻るかもしれません。

ちなみに私は、ブラウザによりbody要素のmargin, paddingが異なるのが気に入らないため、スタイルシートで
コード:
body {
  margin : 0px;
  padding : 0px;
}


としています。
この結果、ずれが解消されるかもしれません。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-11-14 22:11
引用:

カタナさんの書き込み(2006-11-14 14:37)より:
document.documentElement.scrollTop=document.getElementById("ボタン名").style.top


へ?
私、「ポストするときに「今の位置」をとる」と、書きましたよね?で、「…って、form に onsubmit がなかったらどうしよう」とも、書いていますよね?

未検証
コード:
<form onsubmit="return beforePost();" ...
<input type="hidden" id="txtTopScrollPos" ...

<script>
function beforePost() {
tsp = document.getElementById("txtTopScrollPos");
tsp.value = document.body.scrollTop;
...


クライアント側は、こんな感じかな?サーバ側で、
コード:
void Page_Load(...) {
    ...
    if (IsPostBack == true) {
        StringBuilder str = new ...
        str.AppendFormat("document.body.scrollTop = {0};", txtTopScrollPos.Text);
        RegisterStartupScript(str.ToString()); // <script></script>で囲むこと
    }
}


おそらく。。。ASP.NET が form.onsubmit に何か追加するだろうから、このままじゃ動かない。

_________________
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2006-11-15 14:40
Jittaさん返信が遅れまして申し訳ありません。

------------【引用】---------------------
へ?
私、「ポストするときに「今の位置」をとる」と、書きましたよね?で、「…って、form に onsubmit がなかったらどうしよう」とも、書いていますよね?
-----------------------------------------
まったく勘違いしていました。すみません。

------------【引用】---------------------
おそらく。。。ASP.NET が form.onsubmit に何か追加するだろうから、このままじゃ動かない。
-----------------------------------------
一度、試してみようと思いましてjittaさんに提供していただいたサンプルを試したのですが、うまく動きません。
そこで原因を追究してみました。
原因追求の手順は次の通りです。
@formタグのonsubmitにアラート表示を追加
<form name="form1" id="form1" method="post" runat="server" onsubmit="window.alert(document.body.scrollTop);">
A縦に長いXHTMLのドキュメントの下の方にボタンを追加する
B下の方のボタンを押す
Cアラートの内容を確認する

その結果、下の方のボタンを押してもアラートに表示される値は常に0でした。
onsubmit時に今の値が取得できていないのではないかと・・・。
もしも私の解釈がまた間違っていたら申し訳ありませんが、よろしくご教授ください。


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-11-15 22:06
失礼しました(__;

検索キーワード:xhtml body scrolltop
参考: http://diaspar.jp/node/47
コード:
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <body onload="return OnLoad();">
        <script language="javascript">
        <!-- <![CDATA[
        function OnPost() {
            tb = document.getElementById("TextBox1");
            if (tb != null) {
                tb.value = document.documentElement.scrollTop;
            }
            return true;
        }
        
        function OnLoad() {
            tb = document.getElementById("TextBox1");
            if (tb != null) {
                document.documentElement.scrollTop = tb.value;
            }
            return true;
        }
        // ]]> -->
        </script>
        <form id="Form1" method="post" runat="server" onsubmit="return OnPost();">


(適当に略しています)

_________________
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2006-11-16 00:02
Jittaさん何度も本当にありがとうございます。
今、ためしにやってみたのですが、望んでいた動きができました。
何日も困っていたので本当に感謝感謝です。
ありがとうございました。



スキルアップ/キャリアアップ(JOB@IT)