ホームページ > ウェブフロントエンド > Vue.js > Vue エラー: v-html を使用して動的 HTML コードをレンダリングできません。解決方法は?

Vue エラー: v-html を使用して動的 HTML コードをレンダリングできません。解決方法は?

王林
リリース: 2023-08-19 12:27:15
オリジナル
2411 人が閲覧しました

Vue エラー: v-html を使用して動的 HTML コードをレンダリングできません。解決方法は?

Vue エラー: v-html を正しく使用して動的 HTML コードをレンダリングできません。解決方法は?

はじめに:
Vue 開発では、リッチ テキスト コンテンツや動的に生成されたユーザー入力を表示するために、HTML コードを動的にレンダリングする必要がよくあります。 Vue は、この関数を実装するための v-html ディレクティブを提供します。ただし、v-html を使用して動的 HTML コードを正しくレンダリングできない問題が発生する場合があります。この記事では、この問題の原因を調査し、解決策を提供します。

問題の説明:
Vue で、v-html ディレクティブを使用して動的 HTML コードをレンダリングすると、次のエラー メッセージが表示される場合があります:

[vue/valid-v-html] Unexpected control-character
ログイン後にコピー

このエラー メッセージは、次のことを思い出させます。動的 HTML コードに不正な制御文字が含まれているため、レンダリングが失敗します。

問題分析:
このエラー メッセージが表示される理由は、クロスサイト スクリプティング攻撃 (XSS) を防ぐために、Vue がデフォルトで動的 HTML コードを HTML エスケープするためです。ただし、動的 ​​HTML コードが安全であることが確実で、そのままレンダリングする必要がある場合は、v-html ディレクティブを使用する必要があります。ただし、Vue は HTML コードをエスケープするため、特殊文字 (「<」、「>」など) を含む HTML コードは正しくレンダリングできません。

解決策:
この問題の解決策は非常に簡単です。手動で HTML コードを解析してレンダリングするだけです。以下は、v-html を正しく使用して動的 HTML コードをレンダリングする方法を示す例です:

まず、HTML コードを解析し、レンダリングされた結果を返すメソッドを Vue コンポーネントに定義します:

methods: {
  parseHTML(html) {
    const doc = new DOMParser().parseFromString(html, 'text/html');
    return doc.body.innerHTML;
  }
}
ログイン後にコピー

次に、テンプレート内でこのメソッドを呼び出して、動的 HTML コードをレンダリングします。

<template>
  <div v-html="parseHTML(dynamicHTML)"></div>
</template>
ログイン後にコピー

これにより、v-html が動的 HTML コードを正しくレンダリングできない問題を解決できます。

サンプル コード:
以下は、v-html を使用して動的 HTML コードをレンダリングする方法を示す完全な例です:

<template>
  <div v-html="parseHTML(dynamicHTML)"></div>
</template>

<script>
export default {
  data() {
    return {
      dynamicHTML: '<p>这是一段动态渲染的HTML代码</p>'
    };
  },
  methods: {
    parseHTML(html) {
      const doc = new DOMParser().parseFromString(html, 'text/html');
      return doc.body.innerHTML;
    }
  }
};
</script>
ログイン後にコピー

概要:
Vue で、 v-html を正しく使用して動的 HTML コードをレンダリングできない問題は、HTML コードを手動で解析してレンダリングすることで解決できます。 HTML コードを解析するメソッドを定義し、テンプレート内でこのメソッドを呼び出すだけです。このアプローチにより、セキュリティを確保しながら動的 HTML コードが正しくレンダリングされることを保証できます。

この記事が、v-html を正しく使用して動的 HTML コードをレンダリングできないという Vue エラーの問題の解決に役立つことを願っています。

以上がVue エラー: v-html を使用して動的 HTML コードをレンダリングできません。解決方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート