如何用纯Javascript获取SharePoint 2013搜索输入框的当前实时值
问题根因
- 原代码通过固定索引
children[0].children[0]获取元素的方式不可靠,SharePoint 2013渲染页面时会在#SearchBox容器内动态插入额外嵌套节点,导致定位到的是未绑定用户输入的初始节点,只能拿到默认的Search...值。 - 输入框ID为随机生成,无法硬编码适配所有页面。
纯JS通用解决方案
替换原有getCurrentValue函数即可:
function getCurrentValue() { // 直接在SearchBox容器下匹配文本输入框,不依赖固定层级、随机ID const searchInput = document.querySelector('#SearchBox input[type="text"]'); if (!searchInput) { console.error('未定位到搜索输入框'); return; } // 优先取用户输入的实时值,兼容SharePoint自定义控件的特殊逻辑 const searchQuery = searchInput.value; console.log(searchQuery); }
方案说明
- 采用
querySelector按标签+属性匹配元素,无论SharePoint在容器和输入框之间插入多少层中间节点,都能精准定位到目标输入框 - 不依赖任何随机生成的ID,所有页面可通用
- 增加了异常判断,避免元素不存在时触发脚本报错
- 直接读取元素的实时
value属性,和通过ID获取元素的取值逻辑完全一致,不会出现只能拿到默认值的问题
如果你的SharePoint环境中#SearchBox下存在多个文本输入框,可以进一步缩小选择器范围,匹配默认值特征即可:
const searchInput = document.querySelector('#SearchBox input[type="text"][value="Search..."]');
内容的提问来源于stack exchange,提问作者txchou
相关产品推荐
相关产品推荐

