Web hiển thị: màn hình máy tính, màn hình Tivi, điện thoại, ... trình duyệt web của nó có độ phân giải khác nhau.
Trong Page Load mình viết code lấy dữ liệu từ database lên và bỏ chúng vào thẻ MARQUEE để cho chữ chạy từ dưới lên.
Code:
var sb = new StringBuilder();
var dt = bll.DanhSachHienTai_TheoKhuVuc(new KhuVuc(IDKhuVuc));
sb.Append("<marquee direction=up behavior=scroll scrollamount=2 id='myMarquee' >");
foreach (DataRow row in dt.Rows)
{
sb.Append("<div class='tieuDeBanTin'>");
sb.Append(row[FieldName.TenBanTin].ToString().ToUpper());
sb.Append("</div>");
sb.Append(row[FieldName.NoiDung].ToString().ToUpper());
sb.Append("<hr />");
}
sb.Append("</marquee>");
divNoiDung.InnerHtml = sb.ToString();
Mình set height cho marquee là 500px: hiển thị trên TiVi thì vừa, trên màn hình máy tính thì chỉ chiếm 1 phần màn hình.
(Vì có phần footer nên height marquee mình ko để auto được).
Có cách nào set height marquee trong code behind theo từng loại thiết bị?
Mình có các cách như sau như thất bại:
1. Lấy kích thước màn hình bằng javascript, sau đó trong PageLoad lấy giá trị:
Code:
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<script type="text/javascript">
function getMarqueeHeight() {
debugger;
var height = window.innerHeight || document.documentElement.clientHeight;
document.getElementById("hiddenHeight").value = height;
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="contentBanTin" runat="server">
<asp:HiddenField ID="hiddenHeight" runat="server" />
<div class="hienThiNoiDung" id="divNoiDung" runat="server">
</div>
<div class="note" id="divNote" runat="server"></div>
</asp:Content>
=> Nhưng tiếc là PageLoad chạy trước javascript nên ko lấy được kích thước trình duyệt.
2. set height marquee trong javascript luôn:
Code:
<script type="text/javascript">
function setMarqueeHeight() {
debugger;
var height = window.innerHeight || document.documentElement.clientHeight;
var marquee = document.getElementById("myMarquee");
marquee.setAttribute("height", height);
}
</script>
=> Không thấy gì xảy ra, nó lấy height marquee được set trong css.