Skip to content

Commit 56fe707

Browse files
committed
fix: Fix script injection issues
Fix #32
1 parent c209682 commit 56fe707

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

packages/lib/src/lib.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ export const Turnstile = forwardRef<TurnstileInstance | undefined, TurnstileProp
4545
const scriptLoaded = useObserveScript(scriptId)
4646
const containerId = id ?? DEFAULT_CONTAINER_ID
4747

48-
const onLoadCallbackName = `${
49-
scriptOptions?.onLoadCallbackName || DEFAULT_ONLOAD_NAME
50-
}#${containerId}`
48+
const onLoadCallbackName = scriptOptions?.onLoadCallbackName
49+
? `${scriptOptions.onLoadCallbackName}#${containerId}`
50+
: DEFAULT_ONLOAD_NAME
5151

5252
const renderConfig = useMemo(
5353
(): RenderOptions => ({
@@ -187,10 +187,10 @@ export const Turnstile = forwardRef<TurnstileInstance | undefined, TurnstileProp
187187
and set turnstileLoaded to true. Different from the case when handle the injection,
188188
where we set turnstileLoaded in the script.onload callback */
189189
useEffect(() => {
190-
if (!injectScript && scriptLoaded && !turnstileLoaded && window.turnstile) {
190+
if (scriptLoaded && !turnstileLoaded && window.turnstile) {
191191
setTurnstileLoaded(true)
192192
}
193-
}, [injectScript, turnstileLoaded, scriptLoaded])
193+
}, [turnstileLoaded, scriptLoaded])
194194

195195
useEffect(() => {
196196
if (!siteKey) {

packages/lib/src/use-observe-script.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ export default function useObserveScript(scriptId = DEFAULT_SCRIPT_ID) {
66

77
useEffect(() => {
88
const checkScriptExists = () => {
9-
const script = isScriptInjected(scriptId)
10-
if (script) {
9+
if (isScriptInjected(scriptId)) {
1110
setScriptLoaded(true)
1211
}
1312
}

packages/lib/src/utils.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { ContainerSizeSet, InjectTurnstileScriptParams, RenderOptions } from './
22

33
export const SCRIPT_URL = 'https://challenges.cloudflare.com/turnstile/v0/api.js'
44
export const DEFAULT_SCRIPT_ID = 'cf-turnstile-script'
5-
export const DEFAULT_ONLOAD_NAME = 'onloadTurnstileCallback'
65
export const DEFAULT_CONTAINER_ID = 'cf-turnstile'
6+
export const DEFAULT_ONLOAD_NAME = `onloadTurnstileCallback#${DEFAULT_CONTAINER_ID}`
77

88
/**
99
* Function to check if script has already been injected
@@ -26,6 +26,10 @@ export const injectTurnstileScript = ({
2626
}: InjectTurnstileScriptParams) => {
2727
const scriptId = id || DEFAULT_SCRIPT_ID
2828

29+
if (isScriptInjected(scriptId)) {
30+
return
31+
}
32+
2933
const script = document.createElement('script')
3034
script.id = scriptId
3135

0 commit comments

Comments
 (0)