Skip to content

Commit

Permalink
fix(core): 优化图片识别时图片链接显示的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
enncy committed Jun 11, 2022
1 parent f3fc59e commit d9778f6
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 17 deletions.
8 changes: 4 additions & 4 deletions packages/core/src/components/SearchResults.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export const SearchResults = defineComponent({
const currentSearchResults = computed(() => currentResult.value?.ctx?.searchResults);
// 简短标题
const currentTitle = computed(() =>
StringUtils.of(currentResult.value?.ctx?.elements.title?.[0].innerText || '')
StringUtils.of(currentResult.value?.ctx?.elements.title?.[0].textContent || '')
.nowrap()
.toString()
);
Expand Down Expand Up @@ -133,7 +133,7 @@ export const SearchResults = defineComponent({
class="search-results-title"
onMouseenter={() => (currentResult.value = res)}
style={{ color: res.result?.finish ? '' : 'red' }}
title={res.ctx?.elements.title?.[0].innerText}
title={res.ctx?.elements.title?.[0].textContent || ''}
onClick={(e) => {
e.stopPropagation();
}}
Expand All @@ -150,7 +150,7 @@ export const SearchResults = defineComponent({
onClick={() => {
if (isCopy.value === false) {
isCopy.value = true;
navigator.clipboard.writeText(title?.innerText.trim() || '');
navigator.clipboard.writeText(title?.textContent?.trim() || '');
setTimeout(() => {
isCopy.value = false;
}, 500);
Expand All @@ -173,7 +173,7 @@ export const SearchResults = defineComponent({
{i + 1}
</span>
<span >
{StringUtils.of(title?.innerText || '')
{StringUtils.of(title?.textContent || '')
.nowrap()
.max(40)
.toString()}
Expand Down
20 changes: 10 additions & 10 deletions packages/core/src/core/worker/question.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export function defaultQuestionResolve<E>(
const ans = StringUtils.nowrap(answer.answer).trim();
if (ans.length === 1 && isPlainAnswer(ans)) {
const index = ans.charCodeAt(0) - 65;
handler('single', options[index].innerText, options[index], ctx);
handler('single', options[index].textContent || options[index].innerText, options[index], ctx);
return { finish: true, option: options[index] };
}
}
Expand All @@ -28,7 +28,7 @@ export function defaultQuestionResolve<E>(
/** 配对选项的相似度 */
const ratings = answerSimilar(
results.map((res) => res.answers.map((ans) => ans.answer)).flat(),
options.map((el) => el.innerText)
options.map((el) => el.textContent || el.innerText)
);
/** 找出最相似的选项 */
let index = -1;
Expand All @@ -42,7 +42,7 @@ export function defaultQuestionResolve<E>(
// 存在选项,并且相似度超过 60 %
if (index !== -1 && max > 0.6) {
/** 经自定义的处理器进行处理 */
handler('single', options[index].innerText, options[index], ctx);
handler('single', options[index].textContent || options[index].innerText, options[index], ctx);
return {
finish: true,
ratings: ratings.map((r) => r.rating)
Expand All @@ -69,8 +69,8 @@ export function defaultQuestionResolve<E>(

// 判断选项是否完全存在于答案里面
options.forEach((el, i) => {
if (answers.some((answer) => answer.includes(removeRedundant(el.innerText)))) {
targetAnswers[count][i] = el.innerText;
if (answers.some((answer) => answer.includes(removeRedundant(el.textContent || el.innerText)))) {
targetAnswers[count][i] = el.textContent || el.innerText;
targetOptions[count][i] = el;
}
});
Expand All @@ -81,7 +81,7 @@ export function defaultQuestionResolve<E>(
if (isPlainAnswer(ans)) {
for (let i = 0; i < ans.length; i++) {
const index = ans.charCodeAt(i) - 65;
targetAnswers[count][i] = options[index].innerText;
targetAnswers[count][i] = options[index].textContent || options[index].innerText;
targetOptions[count][i] = options[index];
}
}
Expand All @@ -90,14 +90,14 @@ export function defaultQuestionResolve<E>(
if (targetAnswers[count].length === 0) {
const ratings = answerSimilar(
answers,
options.map((el) => el.innerText)
options.map((el) => el.textContent || el.innerText)
).sort((a, b) => b.rating - a.rating);

// 匹配相似率
if (ratings.some((rating) => rating.rating > 0.6)) {
options.forEach((el, i) => {
if (ratings[i].rating > 0.6) {
targetAnswers[count][i] = el.innerText;
targetAnswers[count][i] = el.textContent || el.innerText;
targetOptions[count][i] = el;
}
});
Expand Down Expand Up @@ -166,9 +166,9 @@ export function defaultQuestionResolve<E>(
let option: HTMLElement | undefined;
for (const el of options) {
/** 选项显示正确 */
const textShowCorrect = matches(el.innerText, correctWords);
const textShowCorrect = matches(el.textContent || el.innerText, correctWords);
/** 选项显示错误 */
const textShowIncorrect = matches(el.innerText, incorrectWords);
const textShowIncorrect = matches(el.textContent || el.innerText, incorrectWords);
if (answerShowCorrect && textShowCorrect) {
option = el;
handler('judgement', answerShowCorrect, el, ctx);
Expand Down
5 changes: 4 additions & 1 deletion packages/core/src/script/cx/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,10 @@ export const CXScript = defineScript({
],
onload() {
document.body.querySelectorAll('img').forEach((img) => {
img.after(document.createTextNode(img.src));
const div = document.createElement('div');
div.style.display = 'none';
div.textContent = img.src;
img.after(div);
});
}
},
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/script/cx/study.ts
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ async function chapterTestTask(frame: HTMLIFrameElement) {
},
/** 默认搜题方法构造器 */
answerer: (elements, type, ctx) => {
const title = StringUtils.nowrap(elements.title[0].innerText)
const title = StringUtils.nowrap(elements.title[0].textContent || elements.title[0].innerText)
.trim()
.replace(/\(..题, .+?分\)/, '')
.replace(/[[|(|【|(]..题[\]|)|】|)]/, '')
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/script/cx/work.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export async function workOrExam(
},
/** 默认搜题方法构造器 */
answerer: (elements, type, ctx) => {
const title: string = StringUtils.nowrap(elements.title[0].innerText)
const title: string = StringUtils.nowrap(elements.title[0].textContent || elements.title[0].innerText)
.trim()
.replace(/\(..题, .+?分\)/, '')
.replace(/[[|(|【|(]..题[\]|)|】|)]/, '')
Expand Down

0 comments on commit d9778f6

Please sign in to comment.