我正在使用 intro.js 的 CDN 链接,我想实现“不再在 Intro.js 弹出窗口上显示复选框”,我们该怎么做?

发布于 2025-01-12 22:45:41 字数 1482 浏览 0 评论 0原文

我们有一个要求,我必须在 intro.js 弹出窗口中添加一个复选框,
所以我使用了 intro.js min 和 CSS 文件 CDN 链接来使用 Intro.js,
目前,我收到带有 introcheckbox 的 intro.js 弹出窗口,

我面临的问题是:

  1. 如果我在多个步骤然后我无法获取复选框值,它在一步的情况下有效
  2. 是否有任何其他方式 添加一个复选框 intro.js
  3. 当我单击复选框并单击完成按钮时,复选框的值应传递到后端


我尝试过类似的操作。

Reactjs 代码

    const HomePage: React.FunctionComponent<Props> = ({ id }: Props) => {
    const [checkTour, setCheckTour] = React.useState(false);
    
            React.useEffect(() => {
                if ((window as any).introJs) {
                    (window as any)
                        .introJs()
                        .setOptions({
                            disableInteraction: true,
                            exitOnEsc: false,
                            exitOnOverlyClicking: false,
                            overlayOpacity: 0.7,
                            showBullets: false,
                            showProgress: false,
                            showStepNumbers: false,
                            tooltipClass: "customTooltip",
                            steps: [
                                {
                                    title: "Welcome",
                                    intro: `Hello World! 
              

We have a requirement where I have to add a checkbox on the intro.js pop-up,

so I have used intro.js min and CSS files CDN links to use the Intro.js,
currently, I'm getting intro.js pop-up with the intro and checkbox,

Issues I am facing are:

  1. If I am using checkboxes on multiple steps then I am not able to fetch the checkbox value, its works in the case of one step
  2. Is there any other way to add a checkbox in intro.js
  3. when I click the checkbox and click on the done button the value of the checkbox should be passed to the backend

I Have tried something like.

Reactjs code

    const HomePage: React.FunctionComponent<Props> = ({ id }: Props) => {
    const [checkTour, setCheckTour] = React.useState(false);
    
            React.useEffect(() => {
                if ((window as any).introJs) {
                    (window as any)
                        .introJs()
                        .setOptions({
                            disableInteraction: true,
                            exitOnEsc: false,
                            exitOnOverlyClicking: false,
                            overlayOpacity: 0.7,
                            showBullets: false,
                            showProgress: false,
                            showStepNumbers: false,
                            tooltipClass: "customTooltip",
                            steps: [
                                {
                                    title: "Welcome",
                                    intro: `Hello World! ???? `,
                                    element: document.querySelector("#logoHeighlight"),
                                    tooltipClass: "welcomeTooltip",
                                },
                                {
                                    intro: "<style>{color: 'red';};</style>step 1"! ???? `,
                                    element: document.querySelector("#cart"),
                                },
                                {
                                    intro: `Go to plp page <label for='donotShowMeAgain'> Do Not Show Me Again </label><input type='checkbox' id='donotShowMeAgain'>`,
                                    element: document.querySelector("#HeaderSignIn"),
                                },
                            ],
                        })
                        .onbeforeexit(function () {
                            // eslint-disable-next-line no-console
                            console.log("before Done Calling");
                        })
                        .start();
                    const doneTour = document.getElementById("donotShowMeAgain");
        
                    doneTour?.addEventListener("click", donotShowMeAgainClicked);
        
                    return () => {
                        doneTour?.removeEventListener("click", donotShowMeAgainClicked);
                    };
                }
            }, []);
        
            const donotShowMeAgainClicked = (e: any) => {
                setCheckTour(e.target.checked);
            };
            // eslint-disable-next-line no-console
            console.log("checkTour", checkTour);
         return (
                <Page data-test-selector="homePage" {...styles.homePageContainer} className="homePageContainer">
                    <Zone contentId={id} zoneName="Content" requireRows />
                    <AddToListModal />
                </Page>
            );
        };
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.5.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.5.0/umd/react-dom.production.min.js"></script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文