發表文章

Js- IE不相容 replaceAll 、indexOf、trim 物件不支援屬性或方法 - 解決辦法

Js- IE不相容 replaceAll 、indexOf、trim 物件不支援屬性或方法 - 解決辦法 解決replaceAll 在IE不能使用的問題 解:自己增加replaceAll 加上這段script之後,replaceAll 就可以用了  <script language="javascript" type="text/javascript"> String.prototype.replaceAll = function (FindText,RepText) { regExp = new RegExp(FindText, "g"); return this.replace(regExp,RepText);   } </script> 解決indexOf在IE不能使用的問題 原本使用list.indexOf("a")==-1     解: 改成用jquery裡的$.inArray替代indexOf $.inArray("a", list)==-1 記得 CDN jquery  (點進去可選版本 或是這邊提供1.12版本  <script src="https://code.jquery.com/jquery-1.12.4.js" integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU=" crossorigin="anonymous"></script> 解決trim在IE不能使用的問題 原本的str.trim() 解:將str.trim()改成下列樣式即可 str.replace(/^\s\s*/, '' ).replace(/\s\s*$/, '' ) 或是像replaceAll 一樣自訂trim  <script language="javascript" type="text/javascript"

Js - replaceAll - 關鍵字反白/頁面搜索關鍵字/網頁搜尋文字/網頁標記文字

 Js  - replaceAll - 關鍵字反白/頁面搜索關鍵字/網頁搜尋文字/網頁標記文字 var result= new Set(); result.add(1); // [1] result.add(5); // [1, 5] result是要尋找並劃線的關鍵字們 是一個Set var x = document.getElementsByTagName("td"); 先取得網頁中的內容給x td是在網頁中哪個標籤的內容需要被搜尋 可以是<p>也可以是<td>等 第一種寫法      for (var y of result) {          for (var i = 0; i < x.length; i++) {                x[i].innerHTML =x[i].innerHTML.replaceAll(y, "<font style='background-color:#ffdfbf'>" + y + "</font>");      }                      } 透過修改每一個x[i]的html,將有關鍵字的部分做replace加上背景顏色 這邊切記要用replaceAll 不然JS只會改到第一個出現的關鍵字 以上的方法經過實測IE部分版本不支援 IE根據版本不同對JS相容性差異極大 另如:不支援replaceAll 、遍歷Set的of、indexOf、Array.from()、trim()等等等... 把上面這段程式碼改到IE版本皆可用真是燒掉我的腦 因為沒有replaceAll  所以這一段要自己先加上去  <script language="javascript" type="text/javascript"> String.prototype.replaceAll = function (FindText,RepText) { regExp = new RegExp(FindText, "g"); return this.replace(

C# - MSSQL - Transaction 資料庫執行完沒有存入東西 / 命令的Transaction 屬性尚未初始化 /資料庫新增沒反應

C# - MSSQL - Transaction  資料庫執行完沒有存入東西 / 命令的Transaction 屬性尚未初始化 /資料庫新增沒反應  身為一個走應用端的軟體工程師,資料庫只會基本功夫  串串IBM的AS400或是微軟的MSSQL都還算上手  但這次踩到了地雷,主要是修改承接了舊的程式碼 本來就已經有寫入的方法 就直接使用了 public void UpdateAs400Data(string strConnectionString, string strSql){ System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection(); sqlConnection1.ConnectionString =strConnectionString; if (sqlConnection1.State.ToString()!= "Open") { sqlConnection1.ConnectionString = strConnectionString; sqlConnection1.Open(); } System.Data.SqlClient.SqlTransaction tn = sqlConnection1.BeginTransaction(); System.Data.SqlClient.SqlCommand sqlCommand1 = new System.Data.SqlClient.SqlCommand(); System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter(); sqlCommand1.Connection =sqlConnection1; sqlCommand1.Transaction = tn;     sqlCommand1.CommandText = strSql; try {     int affectedCount = sqlCommand1.ExecuteNonQu

C# - Linq - DataTable刪除重複項/DataTable調整篩選

C# - Linq - DataTable刪除重複項/DataTable調整篩選  有時候DataTable資料重覆要刪掉 大部分的教學都透過DataTable 轉 DataView 再使用 DataView 的ToTable功能帶True 例如: 有個內容重複的Table1 透過下面兩行即可獲得不重複的Table1   DataView DataView1= Table1.DefaultView; Table1 = DataView1.ToTable(true); 這個做法沒問題,但在資料量大概2萬筆的時候             大概要等1分鐘的處理吧... 慢到哭哭 所以後來改了寫法 透過Linq處理不用一秒 真是很快樂 Table1 = Table1 .AsEnumerable().GroupBy(p => p["姓名"]).SelectMany(p => p.GroupBy(s => s["身分證字號"]).SelectMany(ps => ps.GroupBy(l => l["出生年月"])).Select(x => x.First())).CopyToDataTable<DataRow>(); 這段就是在做將Table1之中 姓名與身分證字號與出生年月都相同的資料,僅保留一份 也就達成了不重複資料! 外加如果要根據某列的結果篩選出新的Table可以這樣寫 Table1 = Table1 .AsEnumerable().Where(q => q.Field<string>("性別") != "F").CopyToDataTable<DataRow>(); 這段是會篩選出列名稱[性別]中的資料不為F的列 快樂提升效能吧XD

Html - Css -Js - 控制video按鈕 - 隱藏Video控制項 /鎖住控制項 - 自動播放影片 / 鎖住影片按鈕 / 鎖住影片進度條

圖片
 Html - Css -Js - 控制video按鈕 / 隱藏Video控制項 /鎖住控制項 / 自動播放影片 / 鎖住影片按鈕 / 鎖住影片進度條   為了強迫使用者看影片,不可以直接拉動進度條到最後 所以決定關掉進度條 這個部分踩了一身雷WOW 因為基本的控鍵隱藏 只要Video的controls="controls"拿掉就好 原本的程式這樣會顯示播放與進度條等等 <video width="1024" height="576" id="shVideo" controls="controls">     <source src="mp4連結" type="video/mp4" > </video> 拿掉的這樣 <video width="1024" height="576" id="shVideo">     <source src="mp4連結" type="video/mp4" > </video> 就不會顯示了 But!! 偉大的Chrome可以在影片點右鍵開啟控制介面 這樣有個毛線用,只能擋掉笨的使用者(喂 於是我再加上了Css強制隱藏video的控制介面 <style type="text/css">     video::-webkit-media-controls-timeline {     display: none; } video::-webkit-media-controls {        display: none; }  .auto-style1 {      text-align: center;     }  </style> 這一次即使偉大如Chrome都開不起來了哈哈哈 但更可怕的事情發生了 因為沒有按鈕了,所以影片需要自動播放 然後Chrome現在禁止有聲音的影片自動播放 要就要把影片禁音...不然就是要透過紐 於是 我決定直接用Js刻暫停跟播放的按鈕... 這樣至少比

Js - C# - ASP.NET - Js呼叫後端 - Js調用C# / Js呼叫C#方法

 Js - C# - ASP.NET - Js呼叫後端 / Js調用C# / Js呼叫C#方法 在Asp.net中,我用Js做了一個影片監控,需要在影片播完後,呼叫後端的C#方法 網路上找了很多 目前成功率100%不會出問題的方法只有 建立一個看不到的按鈕連結C# 然後用Js去按按鈕 XD Asp.net前端如下 在body標籤內 <form id="form1" runat="server"> <div style="height:600px;width:100%"> <iframe id="frame1" name="mp" scrolling="auto" style="height:600px;width:100%" runat="server" src="xxx.html"></iframe> </div> <div style="visibility:hidden"> <asp:Button ID="Button2" runat="server" onclick="Button2_Click" /> </div> </form> <script type="text/javascript" > window.onload = function () { var md =window.frames["mp"].document.getElementsByTagName("video")[0]; md.addEventListener("ended",function () { alert("播放结束"); document

Asp.net - Js - 取得 iframe 中影片播完 - 取得iframe 中的元素/ 取得iframe 中html 的影片

Asp.net - Js - 取得 iframe 中影片播完/取得iframe 中的元素/ 取得iframe 中html 的影片 一段Asp.net引入iframe的程式如下 <div style="height:600px;width:100%">     <iframe id="frame1" name="mp" scrolling="auto" style="height:600px;width:100%" runat="server" src="內有video的html連結(結尾是.html喔)" ></iframe>  <div> 現在我要在這個頁面取得内鑲嵌的html的video播完沒 播完了我要呼叫後端方法 要看html的video播放程式請參考這篇 js如下 <script type="text/javascript" >   window.onload = function () { var md =window.frames["mp"].document.getElementsByTagName("video")[0]; md.addEventListener("ended", function () {      alert("播放结束");              })      }     </script> 如此便可在此頁面取得iframe 內的影片是否播放完畢