diff --git a/packages/compiler-sfc/__tests__/__snapshots__/templateTransformAssetUrl.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/templateTransformAssetUrl.spec.ts.snap
index 753f3f9a524..37545d772d3 100644
--- a/packages/compiler-sfc/__tests__/__snapshots__/templateTransformAssetUrl.spec.ts.snap
+++ b/packages/compiler-sfc/__tests__/__snapshots__/templateTransformAssetUrl.spec.ts.snap
@@ -67,6 +67,7 @@ export function render(_ctx, _cache) {
_createElementVNode(\\"img\\", { src: _imports_1 }),
_createElementVNode(\\"img\\", { src: _imports_1 }),
_createElementVNode(\\"img\\", { src: \\"http://example.com/fixtures/logo.png\\" }),
+ _createElementVNode(\\"img\\", { src: \\"//example.com/fixtures/logo.png\\" }),
_createElementVNode(\\"img\\", { src: \\"/fixtures/logo.png\\" }),
_createElementVNode(\\"img\\", { src: \\"data:image/png;base64,i\\" })
], 64 /* STABLE_FRAGMENT */))
@@ -99,7 +100,8 @@ export function render(_ctx, _cache) {
return (_openBlock(), _createElementBlock(_Fragment, null, [
_createElementVNode(\\"img\\", { src: _imports_0 }),
_createElementVNode(\\"img\\", { src: _imports_1 }),
- _createElementVNode(\\"img\\", { src: \\"https://foo.bar/baz.png\\" })
+ _createElementVNode(\\"img\\", { src: \\"https://foo.bar/baz.png\\" }),
+ _createElementVNode(\\"img\\", { src: \\"//foo.bar/baz.png\\" })
], 64 /* STABLE_FRAGMENT */))
}"
`;
diff --git a/packages/compiler-sfc/__tests__/templateTransformAssetUrl.spec.ts b/packages/compiler-sfc/__tests__/templateTransformAssetUrl.spec.ts
index d07b9226686..18e2cb5e98e 100644
--- a/packages/compiler-sfc/__tests__/templateTransformAssetUrl.spec.ts
+++ b/packages/compiler-sfc/__tests__/templateTransformAssetUrl.spec.ts
@@ -29,6 +29,7 @@ describe('compiler sfc: transform asset url', () => {
+
`)
@@ -76,7 +77,8 @@ describe('compiler sfc: transform asset url', () => {
const { code } = compileWithAssetUrls(
`` +
`` +
- ``,
+ `` +
+ ``,
{
includeAbsolute: true
}
diff --git a/packages/compiler-sfc/__tests__/templateUtils.spec.ts b/packages/compiler-sfc/__tests__/templateUtils.spec.ts
index 95bf619be5f..a509657332a 100644
--- a/packages/compiler-sfc/__tests__/templateUtils.spec.ts
+++ b/packages/compiler-sfc/__tests__/templateUtils.spec.ts
@@ -36,6 +36,12 @@ describe('compiler sfc:templateUtils isExternalUrl', () => {
const result = isExternalUrl(url)
expect(result).toBe(true)
})
+
+ test('should return true when String starts with //', () => {
+ const url = '//vuejs.org/'
+ const result = isExternalUrl(url)
+ expect(result).toBe(true)
+ })
})
describe('compiler sfc:templateUtils isDataUrl', () => {
diff --git a/packages/compiler-sfc/src/templateUtils.ts b/packages/compiler-sfc/src/templateUtils.ts
index b1befd927e2..3f4cb8f6caa 100644
--- a/packages/compiler-sfc/src/templateUtils.ts
+++ b/packages/compiler-sfc/src/templateUtils.ts
@@ -6,7 +6,7 @@ export function isRelativeUrl(url: string): boolean {
return firstChar === '.' || firstChar === '~' || firstChar === '@'
}
-const externalRE = /^https?:\/\//
+const externalRE = /^(https?:)?\/\//
export function isExternalUrl(url: string): boolean {
return externalRE.test(url)
}