کتاب مقدس آنلاین: تفاوت میان نسخهها
ظاهر
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
| خط ۴۵۸: | خط ۴۵۸: | ||
links.forEach(link => { | links.forEach(link => { | ||
if (link.href && !link.href. | if (link.href && | ||
!link.href.startsWith('javascript:') && | |||
!link.href.startsWith('#')) { | |||
// برای تمام لینکها (داخلی و خارجی) target="_blank" اضافه کن | |||
link.setAttribute('target', '_blank'); | link.setAttribute('target', '_blank'); | ||
link.setAttribute('rel', 'noopener noreferrer'); | link.setAttribute('rel', 'noopener noreferrer'); | ||
| خط ۴۶۶: | خط ۴۶۹: | ||
console.log(`✅ ${links.length} لینک پردازش شد`); | console.log(`✅ ${links.length} لینک پردازش شد`); | ||
} catch (error) { | } catch (error) { | ||
console.log('⚠️ امکان دسترسی به محتوای iframe وجود ندارد'); | console.log('⚠️ امکان دسترسی به محتوای iframe وجود ندارد (محدودیت CORS)'); | ||
// راهحل جایگزین: استفاده از MutationObserver برای نظارت بر تغییرات DOM | |||
setupLinkInterception(); | |||
} | |||
}); | |||
} | |||
// راهحل جایگزین برای مدیریت کلیک روی لینکها در صورت محدودیت CORS | |||
function setupLinkInterception() { | |||
document.addEventListener('click', function(event) { | |||
// اگر کلیک روی لینکی داخل iframe باشد | |||
if (event.target.tagName === 'A' && event.target.href) { | |||
const link = event.target; | |||
// اگر لینک خارجی است، در پنجره جدید بازش کن | |||
if (!link.href.startsWith('javascript:') && | |||
!link.href.startsWith('#')) { | |||
event.preventDefault(); | |||
window.open(link.href, '_blank', 'noopener,noreferrer'); | |||
} | |||
} | } | ||
}); | }); | ||