Prevent script Collision
维护者通常 2 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 25/100
- Issue 类型
- 功能
- 描述清晰度
- 需要澄清
- 活跃度
- 停滞
- 技术栈
- javascript, typescript
- 领域
- frontend
调研方向
首先检查 issue 中报告的 chrome.scripting.executeScript 使用情况和 Stacks.showModal 调用,以及链接的 Stack Apps 讨论。确定所请求的脚本隔离或冲突避免行为是否能在 Stacks 中实现;完成这项工作需要达成一致的范围,并制定一种有文档记录且可正常工作的方案,同时避免破坏页面现有行为。
由索引模型根据 Issue 内容生成。
描述
Is your feature request related to a problem? Please describe.
Yes, I am developing an extension to be used on SE websites and I was thinking of using the existing methods, but there is a privacy policy problem.
so the other way is to implement the following:
chrome.scripting.executeScript({
target: { tabId: tabId, allFrames: true },
files: ['src/js/stacks.min.js'],
});
the problem is that when it is executed overwrites some events: such as the filtering of posts.
Describe the solution you'd like
I thought that Stack could offer some kind of implementation to support the extensions that implement it; or avoid the script collision with it, through some method like jquery does:
https://api.jquery.com/jquery.noconflict/
Describe alternatives you've considered
I have no alternative; I have put everything documented in this post on the stack apps site but the solutions they have offered me have not worked.
Additional context
I do not know if this topic has already been touched, or if there is a solution that I have not found yet.
in the structure of the extension this document.js that is supposed to be executed next to the user's active tab, well I have this:
let atsu_btn = `
<button
type="button"
class="s-btn js-modal-open"
id="atsu-post-comment"
data-togle="s-modal"
data-target="#atsu-modal"
style="margin-top:5px; border: 3px solid rgb(246, 178, 107); color: rgb(194, 123, 160); font-style: italic;">
Auto Com. & Help
</button>
<div data-controller="s-modal" data-s-modal-return-element="#atsu-post-comment">
<aside class="s-modal" id="atsu-modal" tabindex="-1" role="dialog" aria-labelledby="modal-title" aria-describedby="modal-description" aria-hidden="true" data-controller="s-modal" data-s-modal-target="modal" data-s-modal-return-element=".js-modal-open[data-target='#atsu-modal']" data-s-modal-remove-when-hidden="false" data-joder="1">
<div class="s-modal--dialog wmn8 hmn5" role="document">
<h1 class="s-modal--header" id="modal-title">Selection and Configuration Automatic Comments.</h1>
<div class="s-modal--body hs5" id="modal-description">
<nav>
<ul class="s-navigation" role="tablist" data-controller="s-navigation-tablist">
<li>
<button type="button"
role="tab"
id="tab-question"
aria-selected="true"
aria-controls="panel-question"
class="s-navigation--item is-selected">Comments for Questions</button>
</li>
<li>
<button type="button"
role="tab"
id="tab-answers"
aria-selected="false"
aria-controls="panel-answers"
tabindex="-1"
class="s-navigation--item">Comments for Answers</button>
</li>
<li>
<button type="button"
role="tab"
id="tab-comment-setting"
aria-selected="false"
aria-controls="panel-comment-setting"
tabindex="-1"
class="s-navigation--item">Setting</button>
</li>
</ul>
</nav>
<div id="panel-question" aria-labelledby="tab-question" class="d-flex hs5">
Comments for question.
</div>
<div id="panel-answers" aria-labelledby="tab-answers" class="d-none d-flex hs5">
Comments for Answers
</div>
<div id="panel-comment-setting" aria-labelledby="tab-comment-setting" class="d-none d-flex hs5">
<div class="d-flex flex--item gs8 gsx as-end">
<button class="flex--item s-btn s-btn__primary" type="button">Save Setting ATSU</button>
<button class="flex--item s-btn" type="button" data-action="s-modal#hide">Cancel</button>
</div>
</div>
</div>
</div>
</aside>
</div>
`;
when inserting it, the button does not work, although its attributes are adequate to open the mode, i implement:
document.querySelector("#atsu-post-comment").addEventListener("click", function (e) {
Stacks.showModal(document.querySelector("#atsu-modal"));
});
which returns the error:

to avoid this error then it was tried to implement:
let scriptInserted = document.createElement('script')
scriptInserted.innerHTML='Stacks.showModal(document.querySelector("#atsu-modal"))';
console.log(scriptInserted);
document.body.appendChild(scriptInserted);
Causing the following error:

To mitigate this last error, an attempt was made to implement chrome.scripting.executeScript but even though it works; this has collisions with its original version that comes on the page, to which there is no access due to security policies.
- 主要语言
- TypeScript
- 星标
- 672
- 派生
- 107
- 平均合并
- 3 天 5 小时
- 30 天内合并 PR
- 29
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
相似的 Issue
-
priority: P2
难度 2/5 1-3 小时 新手友好度 78/100
-
难度 2/5 1-3 小时 新手友好度 65/100
prime-radiant-inc/evener#3291 ·
维护者通常 1 天内回复
-
accessibility bug revealjs
难度 2/5 1-3 小时 新手友好度 84/100
quarto-dev/quarto-cli#14961 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 90/100
supabase/agent-skills#614 ·
-
Content
难度 2/5 1-3 小时 新手友好度 68/100
RunestoneInteractive/rs#1559 · 1 条评论 ·
维护者通常 2 天内回复