前端開發者必知的8個冷門卻超實用DOM技巧

身為前端開發者,每天都在與DOM (文件物件模型) 打交道,它就像是網頁的骨架,讓開發者能夠操控頁面上的各種元素。不過,在眾多DOM API中,藏著許多鮮為人知但非常實用的方法。

1. Element.checkVisibility()

這是什麼?

這個方法能夠檢測元素是否「真正可見」,不只是存在於DOM中而已。它考慮了多種因素:

  • CSS遮蓋(被其他元素擋住)
  • 滾動隱藏(元素在可視區域外)
  • 透明度為0(肉眼看不見)

實際應用場景

  • 表單驗證:只對用戶可見的表單欄位進行驗證
  • 廣告曝光統計:確保廣告真正被看到才計算曝光
  • 懶加載優化:精準判斷內容是否進入視野,再觸發加載
// 簡單範例
if (myElement.checkVisibility()) {
  // 元素真的被看到了,執行相應操作
}

2. TreeWalker API

這是什麼?

一種高效能遍歷DOM樹的方式,採用「迭代器模式」設計。想像它就像是一個聰明的導遊,可以按照您的要求有序地帶您參觀DOM樹的各個節點。

為什麼要用它?

相比於 querySelectorAll,TreeWalker在處理超大型DOM樹時更省記憶體,因為它不會一次性把所有匹配的節點都載入記憶體。

// 建立一個只遍歷段落元素的TreeWalker
const walker = document.createTreeWalker(
  document.body,           // 從body開始
  NodeFilter.SHOW_ELEMENT, // 只看元素節點
  {
    acceptNode(node) {
      return node.tagName === 'P' 
        ? NodeFilter.FILTER_ACCEPT 
        : NodeFilter.FILTER_SKIP;
    }
  }
);

// 逐一訪問每個段落元素
let currentNode;
while (currentNode = walker.nextNode()) {
  console.log(currentNode.textContent);
}

3. Node.compareDocumentPosition()

這是什麼?

這個方法能精確判斷兩個節點的「位置關係」,就像是網頁元素的GPS定位系統。

常用位置關係代碼

  • 2 (DOCUMENT_POSITION_PRECEDING): 節點A在B之前
  • 4 (DOCUMENT_POSITION_FOLLOWING): 節點A在B之後
  • 8 (DOCUMENT_POSITION_CONTAINS): A是B的祖先節點
// 實用範例:確定拖放元素的插入位置
function determineDropPosition(draggedElem, targetElem) {
  const position = draggedElem.compareDocumentPosition(targetElem);
  
  if (position & Node.DOCUMENT_POSITION_FOLLOWING) {
    return '目標元素在被拖動元素之後';
  } else if (position & Node.DOCUMENT_POSITION_PRECEDING) {
    return '目標元素在被拖動元素之前';
  }
}

4. scrollIntoViewIfNeeded()

這是什麼?

一個聰明的捲動功能,只有當元素不在視窗中時才會自動捲動,避免不必要的頁面跳動。

與傳統方法的比較

傳統的 scrollIntoView() 會無條件捲動到元素位置,而 scrollIntoViewIfNeeded() 則更加智能,避免了過度捲動帶來的使用體驗問題。

// 使用範例:點擊目錄項時,智能捲動到對應章節
catalogItem.addEventListener('click', () => {
  // 只有當章節不在視窗內時才捲動
  document.getElementById(chapterId).scrollIntoViewIfNeeded();
});

5. insertAdjacentElement()

這是什麼?

這是一個比 appendChild 更靈活的元素插入方法,讓您能精準控制插入的位置。

位置參數選項

  • ‘beforebegin’: 在目標元素前面插入
  • ‘afterbegin’: 在目標元素內部的最前面插入
  • ‘beforeend’: 在目標元素內部的最後面插入
  • ‘afterend’: 在目標元素後面插入
// 實用範例:在表單每個輸入框後加入提示訊息
const helpText = document.createElement('small');
helpText.textContent = '請輸入有效的電子郵件地址';
inputElement.insertAdjacentElement('afterend', helpText);

 

6. Range.surroundContents()

這是什麼?

這是一個處理文字區域的神器,能用指定的元素將選中的內容包裹起來。

實際應用場景

  • rich文件編輯器:快速套用格式如加粗、斜體
  • 文章批註系統:標註並高亮重點段落
  • 搜尋結果高亮:突顯頁面中匹配的搜尋詞
// 實現高亮功能
function highlightText(text) {
  const range = document.createRange();
  const selection = window.getSelection();
  
  if (selection.rangeCount > 0) {
    range.setStart(selection.anchorNode, selection.anchorOffset);
    range.setEnd(selection.focusNode, selection.focusOffset);
    
    const highlight = document.createElement('mark');
    highlight.style.backgroundColor = 'yellow';
    
    try {
      range.surroundContents(highlight);
    } catch(e) {
      console.log('選區跨越多個節點,無法直接包裹');
    }
  }
}

7. Node.isEqualNode()

這是什麼?

這個方法能深度比較兩個節點是否「結構相同」,就像比較兩棵樹的形狀是否一致。

重要注意點

它只比較節點的結構和屬性,不會比較動態綁定的事件處理器等內容。這與 === 比較參考是否相同完全不同。

// 實用範例:檢查模板渲染後結構是否符合預期
const expectedStructure = document.createElement('div');
expectedStructure.innerHTML = '';

預期結構

const renderResult = myTemplateEngine.render(data);

if (expectedStructure.firstChild.isEqualNode(renderResult.firstChild)) {
  console.log('渲染結果符合預期結構!');
}

8. document.createExpression()

這是什麼?

這是XPath表達式的預編譯功能,能大幅提升反覆使用同一XPath查詢的效能。

實際應用場景

  • 大數據量表格的快速篩選查詢
  • 複雜XML文檔的節點訪問
  • 需要重複執行同一查詢的場景
// 預編譯XPath表達式
const compiledXPath = document.createExpression(
  '//table[@id="data-table"]/tbody/tr[position() < 10]'
);

// 多次執行同一查詢而無需重複解析
function updateTable() {
  const result = compiledXPath.evaluate(
    document,
    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
    null
  );
  
  for (let i = 0; i < result.snapshotLength; i++) {
    const row = result.snapshotItem(i);
    // 處理前10行資料
  }
}

小結

這些鮮為人知的DOM API能讓您的前端代碼更加優雅高效。不過在實際應用時,請注意以下幾點:

  • 部分API(如checkVisibility)需要較新的瀏覽器支援(Chrome 106+)
  • 使用前建議檢查Can I Use確認瀏覽器兼容性
  • 適當使用這些API能提升代碼質量,但請避免為了炫技而過度使用冷門API
  • 考慮添加polyfill或fallback方案來處理舊版瀏覽器

掌握這些實用技巧,您的前端開發效率將得到顯著提升!您有用過這些API嗎?歡迎在評論區分享您的經驗和其他實用技巧。

MCP初體驗 – 使用Claude 桌面程式實踐第一步

一、安裝Claude桌面版程式 ( https://claude.ai/download )
二、開啟 開發人員模式
三、確定有安裝node (透過cmd node –version ), 接著claude_desktop_config.json設定

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"C:\\Users\\你自己的使用者名稱\\Desktop",
"C:\\Users\\你自己的使用者名稱\\Downloads"
]
}
}
}

四、重啟claude 就可以調用Filesystem MCP Server

延伸資料:

https://docs.anthropic.com/zh-TW/docs/agents-and-tools/mcp 模型上下文協議 (MCP)

https://modelcontextprotocol.io/introduction

https://modelcontextprotocol.io/quickstart/user

https://github.com/modelcontextprotocol

人工智慧與工人智慧的結合-文件產生器雛型

最近公司交付了一個新的任務,起因是大家都知道工程師最討厭的是寫文件,於是就想起了可不可以用ai寫文件這件事
於是開始了研究這條路,等到prompt都差不多後,主管們又說可不可以系統化,於是就出現了這個雛型系統
老實說,跟ai協作真的很歡樂~重要的是腦袋中要有想法以及邏輯,以及如何說給電腦聽

OpenAI 發佈最新 GPT-4.5 預覽版:更深入的知識、更自然的對話體驗

OpenAI 剛剛透過電子郵件宣布,推出最新、最大的語言模型 GPT-4.5 預覽版。

GPT-4.5 有哪些提升?

  • 更深入的世界知識和更佳的用戶意圖理解
  • 更擅長需要創造力、同理心和廣泛知識的任務
  • 在代理規劃和執行方面表現出色
  • 支援函數調用、結構化輸出、視覺、串流、系統訊息、評估和提示緩存等功能

如何開始使用 GPT-4.5?

GPT-4.5 目前可透過 OpenAI 的 Chat Completions、Assistants 和 Batch APIs 使用。

GPT-4.5 的費用如何計算?

GPT-4.5 的使用費用較高,平均每 100 萬 tokens 為 68 美元,並提供批量作業和緩存輸入的折扣。

GPT-4.5 的未來如何?

OpenAI 正在評估是否長期提供 GPT-4.5 API 服務。

開發人員如何提供幫助?

符合條件的開發人員可以透過分享提示和完成來幫助 OpenAI 改進模型,並可獲得高達每天 100 萬 tokens 的免費 GPT-4.5 使用量。

總結

GPT-4.5 是 OpenAI 在自然語言處理領域的最新進展,為開發者提供了更強大的工具來構建各種應用。雖然費用較高,但其強大的功能和潛在的應用價值仍然值得關注。

GPT‑4.5 GPT‑4o OpenAI o3‑mini (high)
GPQA (science) 71.4% 53.6% 79.7%
AIME ‘24 (math) 36.7% 9.3% 87.3%
MMMLU (multilingual) 85.1% 81.5% 81.1%
MMMU (multimodal) 74.4% 69.1%
SWE-Lancer Diamond (coding)* 32.6%

$186,125

23.3%

$138,750

10.8%

$89,625

SWE-Bench Verified (coding)* 38.0% 30.7% 61.0%

網址
https://openai.com/index/introducing-gpt-4-5/

https://platform.openai.com/docs/models#gpt-4-5

 

Hugging Face推出SLM SmolVLM2讓影像理解模型進入到設備


隨著人工智慧技術的快速發展,視訊理解模型正變得越來越重要。Hugging Face 推出的 SmolVLM2 系列,憑藉其高效能與小型化設計,為視訊理解樹立了新標杆。本文將帶你快速了解 SmolVLM2 的核心技術、應用場景及其在視訊理解領域的突破。


SmolVLM2 的願景與目標

SmolVLM2 的使命是將視訊理解的能力帶到每一台設備,無論是手機還是伺服器。與傳統需要大量計算資源的大型模型不同,SmolVLM2 將高效模型與小型化設計結合,實現了低資源環境下的高效視訊處理。

目前,SmolVLM2 提供三種不同規模的模型:

  • 2.2B 模型:專為高效視訊和圖像理解而設計,是整個系列的旗艦。
  • 500M 模型:在小型化與效能之間取得良好平衡。
  • 256M 模型:實驗性質的極小型模型,探索小型模型的極限。

這些模型均可通過 Python 和 Swift API 使用,並且支持 Hugging Face 的 Transformers 框架。


核心技術與性能

SmolVLM2 2.2B:視覺與視訊的領先模型

2.2B 模型在多項基準測試中表現卓越,特別是在 Video-MME 基準上超越了所有現有的 2B 模型。該模型能夠:

  • 解決圖像中的數學問題。
  • 讀取照片中的文字。
  • 理解複雜圖表及科學視覺問題。

其記憶體效率極高,甚至可以在免費的 Google Colab 環境中運行。

更小巧的 500M 和 256M 模型

  • 500M 模型 提供了接近 2.2B 的視訊理解能力,但參數量僅為後者的四分之一。
  • 256M 模型 則是一個實驗性版本,旨在探索小型模型的應用潛力,適合創新應用和專門的微調項目。

應用場景:SmolVLM2 的多功能演示套件

為了展示 SmolVLM2 的多樣化應用,Hugging Face 開發了多個演示應用程式:

1. iPhone 影片理解

SmolVLM2 的 500M 模型已被整合到 iPhone 應用中,用戶可以直接在本地設備上分析視訊內容,無需依賴雲端運算。

2. VLC 媒體播放器集成

與 VLC 媒體播放器的合作,實現了智慧視訊片段描述和語義搜尋功能,用戶可以根據自然語言描述直接跳轉到影片中的相關部分。

3. 影片精彩片段產生器

這個應用程式可以從長達數小時的影片中自動提取最重要的時刻,適用於足球比賽等長時間的活動摘要。


與 Transformers 和 MLX 的結合

SmolVLM2 與 Hugging Face 的 Transformers 框架無縫集成,支持多種推理場景:

  • 影片推理:用戶可以通過簡單的聊天模板,讓模型生成對影片的詳細描述。
  • 多幅圖像推理:支援對多張圖片進行對比分析。
  • MLX 支持:在 Apple Silicon 裝置上運行 SmolVLM2 的高效推理,適合 Swift 開發者。

此外,SmolVL

SmolVLM2:將視訊理解帶入每台設備

隨著人工智慧技術的快速發展,視訊理解模型正變得越來越重要。Hugging Face 推出的 SmolVLM2 系列,憑藉其高效能與小型化設計,為視訊理解樹立了新標杆。本文將帶你快速了解 SmolVLM2 的核心技術、應用場景及其在視訊理解領域的突破。


SmolVLM2 的願景與目標

SmolVLM2 的使命是將視訊理解的能力帶到每一台設備,無論是手機還是伺服器。與傳統需要大量計算資源的大型模型不同,SmolVLM2 將高效模型與小型化設計結合,實現了低資源環境下的高效視訊處理。

目前,SmolVLM2 提供三種不同規模的模型:

  • 2.2B 模型:專為高效視訊和圖像理解而設計,是整個系列的旗艦。
  • 500M 模型:在小型化與效能之間取得良好平衡。
  • 256M 模型:實驗性質的極小型模型,探索小型模型的極限。

這些模型均可通過 Python 和 Swift API 使用,並且支持 Hugging Face 的 Transformers 框架。


核心技術與性能

SmolVLM2 2.2B:視覺與視訊的領先模型

2.2B 模型在多項基準測試中表現卓越,特別是在 Video-MME 基準上超越了所有現有的 2B 模型。該模型能夠:

  • 解決圖像中的數學問題。
  • 讀取照片中的文字。
  • 理解複雜圖表及科學視覺問題。

其記憶體效率極高,甚至可以在免費的 Google Colab 環境中運行。

更小巧的 500M 和 256M 模型

  • 500M 模型 提供了接近 2.2B 的視訊理解能力,但參數量僅為後者的四分之一。
  • 256M 模型 則是一個實驗性版本,旨在探索小型模型的應用潛力,適合創新應用和專門的微調項目。

應用場景:SmolVLM2 的多功能演示套件

為了展示 SmolVLM2 的多樣化應用,Hugging Face 開發了多個演示應用程式:

1. iPhone 影片理解

SmolVLM2 的 500M 模型已被整合到 iPhone 應用中,用戶可以直接在本地設備上分析視訊內容,無需依賴雲端運算。

2. VLC 媒體播放器集成

與 VLC 媒體播放器的合作,實現了智慧視訊片段描述和語義搜尋功能,用戶可以根據自然語言描述直接跳轉到影片中的相關部分。

3. 影片精彩片段產生器

這個應用程式可以從長達數小時的影片中自動提取最重要的時刻,適用於足球比賽等長時間的活動摘要。


與 Transformers 和 MLX 的結合

SmolVLM2 與 Hugging Face 的 Transformers 框架無縫集成,支持多種推理場景:

  • 影片推理:用戶可以通過簡單的聊天模板,讓模型生成對影片的詳細描述。
  • 多幅圖像推理:支援對多張圖片進行對比分析。
  • MLX 支持:在 Apple Silicon 裝置上運行 SmolVLM2 的高效推理,適合 Swift 開發者。

此外,SmolVLM2 還支持在視訊數據上的微調,用戶可以根據自己的需求進一步優化模型。


為未來創造更多可能

SmolVLM2 的推出標誌著視訊理解模型進入了一個新時代。它不僅在效能上實現了突破,還通過小型化設計使模型更加普及,適用於更多場景和設備。

如果你對 SmolVLM2 感興趣,歡迎探索以下資源:

M2 還支持在視訊數據上的微調,用戶可以根據自己的需求進一步優化模型。


為未來創造更多可能

SmolVLM2 的推出標誌著視訊理解模型進入了一個新時代。它不僅在效能上實現了突破,還通過小型化設計使模型更加普及,適用於更多場景和設備。

如果你對 SmolVLM2 感興趣,歡迎探索以下資源:

Perplexity 推出深度研究api

Perplexity 發布了新的 Deep Research API,使開發人員能夠將強大的研究功能直接集成到他們的應用程序中。

Deep Research API 分析數百個來源,在幾分鐘內而非幾小時內提供專家級的見解。 API 允許您規劃和執行自主研究、跨不同領域(金融、營銷、旅遊等)訪問詳細的見解,並生成全面的報告。 Deep Research API 在 SimpleQA 基準測試中準確率達 93.9%,在 Humanity’s Last Exam 中準確率達 21.1%,顯著優於 Gemini Thinking、o3-mini、o1 和 DeepSeek-R1。

Perplexity 還響應客戶的反饋,添加了兩個具有更高速率限制的新層級。
目前Perplexity支援的模型有

Model Context Length   Model Type  
sonar-deep-research 60k Chat Completion  
sonar-reasoning-pro 128k Chat Completion  
sonar-reasoning 128k Chat Completion  
sonar-pro 200k Chat Completion  
sonar 128k Chat Completion 
r1-1776 128k Chat Completion  

範例程式

curl --location 'https://api.perplexity.ai/chat/completions' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'Authorization: Bearer yourapikey' \
--data '{
"model": "sonar-deep-research",
"messages": [
{
"role": "system",
"content": "Be precise and concise."
},
{
"role": "user",
"content": "r question"
}
]
}'

https://docs.perplexity.ai/home

NoCode自動化經營Facebook – 使用make


隨著社群媒體的快速發展,Facebook 已成為許多品牌和企業經營的重要平台。然而,經營 Facebook 社群是一項耗時且需要持續投入的工作,包含內容發布、留言回覆、數據分析等。這時候,No-Code 工具 Make (原名 Integromat) 就成為了一個強大的解決方案,幫助實現 Facebook 社群經營的自動化,節省時間並提升效率。

什麼是 Make?
Make 是一款功能強大的 No-Code 自動化工具,允許用戶透過可視化的方式設計自動化工作流程(Workflows)。它能夠整合多種應用程式(例如 Facebook、Google Sheets、Slack 等),讓不同平台之間的資料和操作自動化執行,無需撰寫程式碼。

為什麼需要 Facebook 社群經營自動化?
節省時間與人力:自動化重複性任務,如定時發布貼文、整理留言數據等。
即時回應用戶:快速回覆用戶留言或私訊,提升互動體驗。
數據分析與追蹤:自動收集並整理社群數據,幫助制定更好的經營策略。
降低出錯機率:減少手動操作導致的疏漏或錯誤。
Facebook 社群經營自動化的應用場景
以下是幾個常見的應用場景,說明如何透過 Make 實現自動化:
1. 定時發布貼文
挑戰:手動發布貼文需要記住時間點,且可能因忙碌而錯過。
解決方案:利用 Make 將貼文內容與發布時間表整合到 Google Sheets,設定自動化流程,根據時間表自動發布貼文到 Facebook 粉絲專頁。
2. 自動回覆用戶留言
挑戰:即時回覆大量留言需要投入大量人力。
解決方案:透過 Make,自動偵測 Facebook 貼文下的留言內容,並根據關鍵字設定自動回覆。例如,當用戶留言「價格多少?」時,自動回覆「請私訊我們了解更多詳情」。
3. 私訊自動回覆與分流
挑戰:用戶私訊數量龐大,難以及時處理。
解決方案:設計自動化流程,根據用戶私訊的內容,將訊息分類並自動回覆。例如,將銷售相關訊息轉發給業務人員,將客服問題分配給客服團隊。
4. 自動收集社群數據
挑戰:手動整理粉絲專頁的數據(如按讚數、分享數、留言數)耗時費力。
解決方案:透過 Make,定期將 Facebook 貼文的互動數據(按讚、分享、留言等)匯出到 Google Sheets 或 Excel,方便進行分析。

想試用make也可以嘗試用我的連結 https://www.make.com/en/register?pc=superlevin

Github Copilot支援Anthropic Claude 3.7 Sonnet


AI圈子昨天發了新消息,就是Anthropic 發佈了新 Claude 3.7 Sonnet,為首個混合推理模型提供標準和擴展思考兩種模式並支援近乎即時回應或展示逐步思考過程

延伸閱讀: laude 3.7 Sonnet發佈:別提什麼AGI,我Anthropic要賺企業客戶的錢!

2025年回顧


重新回到興農集團體系下的軟體公司,已經近十年(實際是9.6年)。
2025年的職銜從專案經理成了專業處長。
從一開始的delphi 開發到.net ~
從原先接觸的POS系統到流通、零售、餐飲,一直到ERP系統的會計/預算/人事薪資/票據,到政府財會/預算以及智慧農業
整個重心除了.net 開發與架構設計外,增加了ai相關的技能樹