Giter Site home page Giter Site logo

Comments (15)

ayangweb avatar ayangweb commented on August 21, 2024 1

哦,我知道了,set_html 只会设置 html格式的值,并不会设置纯文本格式的值,而你再次粘贴时,所以粘贴时无内容

你可以使用下方 api,去设置多格式的值

ctx.set(contents).unwrap();

谢谢,亲测可行!😁

from clipboard-rs.

ChurchTao avatar ChurchTao commented on August 21, 2024

贴下代码demo,然后说一下操作流程吧,我好复现一下

from clipboard-rs.

ayangweb avatar ayangweb commented on August 21, 2024

贴下代码demo,然后说一下操作流程吧,我好复现一下

OK,等我抽空贴下代码 + 视频

from clipboard-rs.

ChurchTao avatar ChurchTao commented on August 21, 2024

哦,我知道了,set_html 只会设置 html格式的值,并不会设置纯文本格式的值,而你再次粘贴时,所以粘贴时无内容

你可以使用下方 api,去设置多格式的值

ctx.set(contents).unwrap();

from clipboard-rs.

ayangweb avatar ayangweb commented on August 21, 2024

哦,我知道了,set_html 只会设置 html格式的值,并不会设置纯文本格式的值,而你再次粘贴时,所以粘贴时无内容

你可以使用下方 api,去设置多格式的值

ctx.set(contents).unwrap();

好的,谢谢,我研究下😁

from clipboard-rs.

ayangweb avatar ayangweb commented on August 21, 2024

@ChurchTao 大佬,是这样使用吗?我在这样复制的时候粘贴出来的 html 是没有格式的,是纯文本🤔

#[command]
async fn write_html(
    manager: State<'_, ClipboardManager>,
    text: String,
    html: String,
) -> Result<()> {
    println!("{text}\n\n\n{html}");

    let contents = vec![ClipboardContent::Text(text), ClipboardContent::Html(html)];

    manager.context.set(contents).unwrap();

    Ok(())
}
iShot_2024-06-25_14.35.08.mp4

from clipboard-rs.

ChurchTao avatar ChurchTao commented on August 21, 2024

贴下你存储时的逻辑

from clipboard-rs.

ayangweb avatar ayangweb commented on August 21, 2024

贴下你存储时的逻辑

读取:

/**
 * 读取 HTML 内容
 */
export const readHTML = async () => {
	const html = await invoke<string>(CLIPBOARD_PLUGIN.READ_HTML);

	const size = html2text(html).length;

	return {
		size,
		value: html,
	};
};
#[command]
async fn read_html(manager: State<'_, ClipboardManager>) -> Result<String> {
    Ok(manager.context.get_html().unwrap())
}

写入:

/**
 * HTML 内容写入剪切板
 */
export const writeHTML = async (html: string) => {
	invoke(CLIPBOARD_PLUGIN.WRITE_HTML, {
		text: html2text(html),
		html,
	});
};
#[command]
async fn write_html(
    manager: State<'_, ClipboardManager>,
    text: String,
    html: String,
) -> Result<()> {
    println!("{text}\n\n\n{html}");

    let contents = vec![ClipboardContent::Text(text), ClipboardContent::Html(html)];

    manager.context.set(contents).unwrap();

    Ok(())
}

from clipboard-rs.

ChurchTao avatar ChurchTao commented on August 21, 2024

html2text 内容看下

from clipboard-rs.

ayangweb avatar ayangweb commented on August 21, 2024

html2text 内容看下

/**
 * 得到 HTML 内容的纯文本
 * @param html html 内容
 */
export const html2text = (html: string) => {
	const divElement = document.createElement("div");

	divElement.innerHTML = html;

	return divElement.innerText;
};

from clipboard-rs.

ChurchTao avatar ChurchTao commented on August 21, 2024

我试了一下,原模原样的 text set 回去是正常带换行的。

那么我们就能排除是 API 的问题,是否可以往这个 html2text 上怀疑一下是不是格式发生了什么变化

from clipboard-rs.

ayangweb avatar ayangweb commented on August 21, 2024

我试了一下,原模原样的 text set 回去是正常带换行的。

那么我们就能排除是 API 的问题,是否可以往这个 html2text 上怀疑一下是不是格式发生了什么变化

对哦,我明白了,原来如此,我研究下怎么复制带格式的纯文本,谢谢🥰

from clipboard-rs.

ChurchTao avatar ChurchTao commented on August 21, 2024

我感觉你把 html 和 text 放两个字段会好一点,你现在应该是其实只在页面上存了一个 html

from clipboard-rs.

ayangweb avatar ayangweb commented on August 21, 2024

我感觉你把 html 和 text 放两个字段会好一点,你现在应该是其实只在页面上存了一个 html

存是我有考虑的,搜索的时候只搜索纯文本会好一些!但是我现在发现了问题所在!

复制内容:

const a = 1;
const b = 2;

剪切板的 html 内容:

<meta charset='utf-8'><div style="color: #abb2bf;background-color: #23272e;font-family: JetBrains Mono, Menlo, Monaco, 'Courier New', monospace, Menlo, Monaco, 'Courier New', monospace;font-weight: normal;font-size: 13px;line-height: 20px;white-space: pre;"><div><span style="color: #c678dd;font-style: italic;">const</span><span style="color: #abb2bf;"> </span><span style="color: #e5c07b;">a</span><span style="color: #abb2bf;"> </span><span style="color: #56b6c2;font-style: italic;">=</span><span style="color: #abb2bf;"> </span><span style="color: #d19a66;">1</span><span style="color: #abb2bf;">;</span></div><div><span style="color: #c678dd;font-style: italic;">const</span><span style="color: #abb2bf;"> </span><span style="color: #e5c07b;">b</span><span style="color: #abb2bf;"> </span><span style="color: #56b6c2;font-style: italic;">=</span><span style="color: #abb2bf;"> </span><span style="color: #d19a66;">2</span><span style="color: #abb2bf;">;</span></div>&lt;br&gt;</div>

问题出在 1; 后面应该是用 <br />(或许是 \n) 做换行处理才对,但是现在并没有,而是直接就是用 div 作为块级元素来完成占满一行!导致取到的 text 没有换行!

或者我可以换一种解决思路,我在 readHTML 的时候调用 readText 把这俩都存起来,或许这个问题就可以解决!

image

果真如此,这样调用 readText 就可以获取正常带格式的文本!

from clipboard-rs.

ayangweb avatar ayangweb commented on August 21, 2024

我试了一下,原模原样的 text set 回去是正常带换行的。

那么我们就能排除是 API 的问题,是否可以往这个 html2text 上怀疑一下是不是格式发生了什么变化

感谢大佬,终于摆平这个问题了 🥳

from clipboard-rs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.