/* Aljaweea — footer "Cookie Preferences" link opens the Complianz banner.
* Original by Digency (19 Aug 2026); amended 8 Sep 2026, runbook 5.14:
* - e.preventDefault() so the href="#" no longer scrolls the page to the top;
* - calls Complianz's own cmplz_set_banner_status('show') and falls back to
* clicking the (hidden) Manage-consent button if that function is absent.
* Rollback: restore the original 12-line version recorded in the runbook. */
document.addEventListener('click', function (e) {
var link = e.target.closest('.cmplz-show-banner');
if (!link) { return; }
e.preventDefault();
if (typeof cmplz_set_banner_status === 'function') {
cmplz_set_banner_status('show');
} else {
document.querySelectorAll('.cmplz-manage-consent').forEach(function (btn) { btn.click(); });
}
});
قبل نحو 1150 عاماً، وفي زمن لم تكن فيه الطائرات سوى حلم بعيد، حاول رجل في الأندلس أن يقترب من السماء بطريقة غير مألوفة. لم يكن يمتلك محركاً ولا أدوات قياس حديثة، لكنه امتلك فضولاً دفعه إلى التفكير في محاكاة الطيور والتحليق بأجنحة من صنع الإنسان. كان ذلك الرجل عباس بن فرناس، الذي ارتبط اسمه بإحدى أشهر المحاولات المبكرة للطيران في التاريخ.
عالم أندلسي متعدد المواهب
وُلد عباس بن فرناس نحو العام 810، وتوفي العام 887 م، وعاش في القرن التاسع الميلادي، وارتبط اسمه بمدينة قرطبة الاسبانية التي كانت آنذاك مركزاً سياسياً وثقافياً وعلمياً بارزاً في الأندلس. ولم يقتصر اهتمامه على مجال واحد؛ فقد عُرف بالشعر وببعض الحرف والصناعات، إلى جانب اهتماماته العلمية والفلكية.
وتشير ترجمته في موسوعة الإسلام الصادرة عن مؤسسة الديانة التركية، كما عرضها موقع متحف الإسلام، إلى اهتمامه بقياس الزمن وصناعة أدوات لمراقبة السماء، فضلاً عن اشتغاله بالزجاج وعلوم أخرى. وتعكس هذه الصورة شخصية جمعت بين المعرفة النظرية والمهارة العملية في مرحلة ازدهار علمي وثقافي.
محاولة التحليق.. أجنحة لمنافسة الطيور
ترتبط أشهر الروايات عن ابن فرناس بمحاولة طيران يُؤرَّخ لها عادةً نحو العام 875. وقد أوردها المؤرخ أحمد بن محمد المقري (توفي 1632م) في كتابه “نفح الطيب من غصن الأندلس الرطيب“، وهو كتاب كُتب بعد الحادثة بنحو سبعة قرون، حيث نقل المقري هذه الرواية تحديداً عن كتابٍ للمؤرخ الأقدم ابن حيان القرطبي ( توفي 1076م). وتذكر الرواية أن ابن فرناس غطى جسده بالريش وثبّت جناحين، ثم حاول التحليق أمام مجموعة من الناس.
صورة تصورية لرجل بأجنحة من الريش تستحضر المحاولات المبكرة للتحليق. صورة مولّدة بالذكاء الاصطناعي، الجوية.
وتفيد الرواية بأنه بقي في الهواء مدة قصيرة، ثم تعرّض لإصابة عند الهبوط. وتفسّر بعض الروايات ذلك بأنه لم يزوّد جهازه بذيل يشبه ذيل الطيور ليعينه على الهبوط، وهو تفسير يبدو أنه جاء متأخراً ولا يُعدّ معلومة موثقة من زمن الحادثة.
وهذه الفجوة الزمنية بين الحدث وراويهِ تفسّر سبب عدم حسم تفاصيل التجربة؛ فالروايات تتباين في وصف الجهاز وموضع الانطلاق ونتيجة المحاولة، ويعرض موقع متحف الإسلام هذا التباين في عرضه البحثي، كما تناولت دراسة غلاير أندرسون “جسر إلى السماء: فنون العلم في عصر عباس بن فرناس” الصادرة عن مطبعة جامعة أكسفورد العام 2024 سياق عصره وتجربته.
هل كان عباس بن فرناس أول من طار؟
تمنح هذه القصة ابن فرناس مكانة بارزة في الذاكرة التاريخية لمحاولات الطيران، لكنها لا تعني أنه اخترع الطائرة بالمعنى المعروف اليوم، ولا أنه حقق أول رحلة جوية موثقة وفق المعايير الحديثة.
فثمة فرق جوهري بين محاولة التحليق بأجنحة تحاكي الطيور، وبين تطوير آلة تطير بمحرك ويمكن التحكم في اتجاهها وتوازنها. وقد احتاج الوصول إلى ذلك إلى فهم أعمق لحركة الهواء وقوى الرفع والدفع ومبادئ التحكم.
واستمر الإنسان في النظر إلى الطيور كمصدر إلهام، كما يوضح المتحف الوطني للتاريخ الطبيعي التابع لسميثسونيان في مقاله عن استلهام الطيران من تطور الطيور، ومن ذلك دراسات العالم والفنان الايطالي ليوناردو دافنشي وتصميماته في القرن الخامس عشر لآلات ذات أجنحة متحركة، غير أن تلك التصاميم بقيت رسوماً ولم تتحول إلى آلات طائرة عملية، كما هي حال محاولة ابن فرناس التي بقيت تجربة فردية لم تُبنَ عليها صناعة.
أفكار الطيران المبكرة: ابن فرناس نحو 875 وتصاميم دافنشي. رسم بياني: الجوية، المصدر: متحف الإسلام؛ مطبعة جامعة أكسفورد؛ المتحف الوطني للتاريخ الطبيعي التابع لسميثسونيان.
ابن فرناس في الذاكرة العربية
لا يزال اسم ابن فرناس حاضراً في الثقافة العربية رمزاً للجرأة العلمية. فقد سُمّيت باسمه فوهة على سطح القمر، وأُقيم له تمثال قرب مطار بغداد الدولي، وسُمّي باسمه جسر في قرطبة.
إرث يتجاوز تجربة الطيران
لم يترك ابن فرناس طائرة ولا تصميماً هندسياً مكتملاً يمكن تتبعه في صناعة الطيران الحديثة، لكن اسمه بقي رمزاً لجرأة الإنسان على اختبار حدود الممكن. وتكشف قصته أن الطريق إلى السماء لم يبدأ مع المحركات، بل حين راقب الإنسان الطيور وتساءل: هل يمكنه أن يفعل مثلها؟
وربما تكمن أهمية تجربته اليوم في السؤال الذي خلّفته أكثر من تفاصيلها: كيف تتحول فكرة بدت مستحيلة في زمنها إلى جزء من حياتنا اليومية بعد مسيرة طويلة من البحث والتجربة؟
شارك المقال
ابقوا على اطلاع دائم. احصلوا على أحدث أخبار الطيران والفضاء في العالم العربي لحظة نشرها عبر واتساب وتيليغرام، أو اشتركوا بنشرتنا البريدية لتصلكم نشرة أسبوعية. كما يمكنكم إضافتنا إلى مصادركم المفضلة لتظهر لكم أخبارنا بشكل أوسع في بحث Google.
نستخدم ملفات تعريف الارتباط لتشغيل هذا الموقع، وقياس القراءة، وعرض الإعلانات التي تموّل عملنا الصحافي. في منطقتكم تبقى ملفات تعريف الارتباط غير الضرورية معطّلة حتى تقبلوها. يمكنكم قبولها كلها أو رفضها كلها أو الاختيار بحسب الفئة، وتغيير خياركم في أي وقت عبر رابط “تفضيلات ملفات تعريف الارتباط” في أسفل كل صفحة.
وظيفية دائما مفعلة
ضرورية لعمل الموقع: لغة التصفح، وخياركم بشأن ملفات تعريف الارتباط، وحماية النماذج، وجلسة ووردبريس. مفعّلة دائماً.
تفضيلات
تحفظ الإعدادات التي اخترتموها حتى لا تحتاجوا إلى ضبطها مجدداً في زيارتكم التالية.
إحصائيات
Google Analytics لمعرفة المقالات الأكثر قراءة، ومن أي بلد، وعلى أي أجهزة. تُختصر عناوين IP قبل تخزينها.التخزين أو الوصول الفني الذي يُستخدم حصرياً لأغراض إحصائية مجهولة المصدر. وبدون أمر استدعاء أو امتثال طوعي من جانب مزود خدمة الإنترنت الخاص بك أو سجلات إضافية من طرف ثالث، لا يمكن عادةً استخدام المعلومات المخزنة أو المستردة لهذا الغرض وحده لتحديد هويتك.
تسويق
الإعلانات التي تعرضها Google AdSense، ومقاطع الفيديو المضمّنة وأزرار وسائل التواصل الاجتماعي، وبكسلات القياس لمنشوراتنا على المنصات الاجتماعية.
نستخدم ملفات تعريف الارتباط لتشغيل هذا الموقع، وقياس القراءة، وعرض الإعلانات التي تموّل عملنا الصحافي. وهي مفعّلة ما لم ترفضوها هنا. يمكنكم تغيير خياركم في أي وقت عبر رابط “تفضيلات ملفات تعريف الارتباط” في أسفل كل صفحة.
وظيفية دائما مفعلة
ضرورية لعمل الموقع: لغة التصفح، وخياركم بشأن ملفات تعريف الارتباط، وحماية النماذج، وجلسة ووردبريس. مفعّلة دائماً.
تفضيلات
تحفظ الإعدادات التي اخترتموها حتى لا تحتاجوا إلى ضبطها مجدداً في زيارتكم التالية.
إحصائيات
Google Analytics لمعرفة المقالات الأكثر قراءة، ومن أي بلد، وعلى أي أجهزة. تُختصر عناوين IP قبل تخزينها.التخزين أو الوصول الفني الذي يُستخدم حصرياً لأغراض إحصائية مجهولة المصدر. وبدون أمر استدعاء أو امتثال طوعي من جانب مزود خدمة الإنترنت الخاص بك أو سجلات إضافية من طرف ثالث، لا يمكن عادةً استخدام المعلومات المخزنة أو المستردة لهذا الغرض وحده لتحديد هويتك.
تسويق
الإعلانات التي تعرضها Google AdSense، ومقاطع الفيديو المضمّنة وأزرار وسائل التواصل الاجتماعي، وبكسلات القياس لمنشوراتنا على المنصات الاجتماعية.
var molongui_authorship_byline_params = {"byline_modifiers_enabled":"","byline_prefix":"","byline_suffix":"","byline_separator":",\u00a0","byline_last_separator":"\u00a0and\u00a0","byline_link_title":"View all posts by","byline_link_class":"","byline_dom_tree":"","byline_dom_prepend":"","byline_dom_append":"","byline_decoder":"v3","byline_data_url":"https://aljaweea.com/ar/wp-json/molongui-authorship/v1/bylines","byline_rest_nonce":""};
//# sourceURL=molongui-authorship-byline-js-extra
let cmplzBlockedContent = document.querySelector('.cmplz-blocked-content-notice');
if ( cmplzBlockedContent) {
cmplzBlockedContent.addEventListener('click', function(event) {
event.stopPropagation();
});
}
//# sourceURL=cmplz-cookiebanner-js-after
/* Accessibility quick fixes (WCAG 2.2 AA test, 27 Oct 2026). Safe to switch off.
1 skip link · 2 form autofill · 3 language switcher name · 4 dark-mode button name and state
5 mobile menu state and focus · 6 heading levels for screen readers · 7 author photos
8 form errors linked to fields · 9 "opens in a new tab" for screen readers · 10 main content area */
(function () {
var isAr = (document.documentElement.lang || '').toLowerCase().indexOf('ar') === 0;
var T = isAr
? { skip: 'تخطَّ إلى المحتوى الرئيسي', dark: 'الوضع المظلم', newTab: ' (يُفتح في علامة تبويب جديدة)' }
: { skip: 'Skip to main content', dark: 'Dark mode', newTab: ' (opens in a new tab)' };function visible(el) {
if (!el) { return false; }
var r = el.getBoundingClientRect(), s = getComputedStyle(el);
return r.width > 0 && r.height > 0 && s.visibility !== 'hidden' && s.display !== 'none' && r.right > 0 && r.left < window.innerWidth;
}function run() {
/* 1. Skip link (WCAG 2.4.1): jumps to the first block after the site header */
var header = document.getElementById('theme-header');
var target = header ? header.nextElementSibling : null;
while (target && (target.tagName === 'SCRIPT' || target.tagName === 'STYLE')) { target = target.nextElementSibling; }
if (target && !document.querySelector('.aj-skip-link')) {
if (!target.id) { target.id = 'aj-main'; }
if (!target.hasAttribute('tabindex')) { target.setAttribute('tabindex', '-1'); }
var a = document.createElement('a');
a.className = 'aj-skip-link';
a.href = '#' + target.id;
a.textContent = T.skip;
a.addEventListener('click', function () { setTimeout(function () { target.focus({ preventScroll: true }); }, 0); });
document.body.insertBefore(a, document.body.firstChild);
}/* 10. Main content area (WCAG 1.3.1): pages with none (the home pages) get one */
if (target && !document.querySelector('main, [role="main"]') && !target.querySelector('footer, #footer')) {
target.setAttribute('role', 'main');
}/* 2. Form autofill (WCAG 1.3.5) */
var inputs = document.querySelectorAll('form input');
for (var i = 0; i < inputs.length; i++) {
var el = inputs[i];
if (el.getAttribute('autocomplete')) { continue; }
var n = (el.name || '').toLowerCase();
var l = ((el.labels && el.labels[0] && el.labels[0].textContent) || el.getAttribute('aria-label') || el.placeholder || '').toLowerCase().trim();
var v = null;
if (el.type === 'email') { v = 'email'; }
else if (el.type === 'tel' || (/phone|هاتف|جوال/.test(l) && !/mail|بريد/.test(l))) { v = 'tel'; }
else if (/first_name/.test(n)) { v = 'given-name'; }
else if (/last_name/.test(n)) { v = 'family-name'; }
else if (el.type === 'text' && /^(name|full name|الاسم|الإسم)\b/.test(l)) { v = 'name'; }
else if (el.type === 'url') { v = 'url'; }
if (v) { el.setAttribute('autocomplete', v); }
}/* 3. Language switcher (WCAG 2.4.4, 3.1.2): name the target language in that language */
var sw = document.querySelectorAll('a.lang-toggle');
for (var s = 0; s < sw.length; s++) {
var toAr = /\/ar(\/|$)/.test(sw[s].getAttribute('href') || '');
var name = toAr ? 'العربية' : 'English';
sw[s].setAttribute('aria-label', name);
sw[s].setAttribute('title', name);
sw[s].setAttribute('lang', toAr ? 'ar' : 'en');
sw[s].setAttribute('hreflang', toAr ? 'ar' : 'en');
var ims = sw[s].querySelectorAll('img');
for (var k = 0; k < ims.length; k++) { ims[k].setAttribute('alt', ''); }
}/* 4. Dark-mode button (WCAG 4.1.2): clear name, behaves as a toggle button that reports on/off */
var skins = document.querySelectorAll('a.change-skin');
function isDark() { return document.documentElement.classList.contains('dark-skin'); }
function syncSkin() { for (var q = 0; q < skins.length; q++) { skins[q].setAttribute('aria-pressed', isDark() ? 'true' : 'false'); } }
for (var d = 0; d < skins.length; d++) {
skins[d].setAttribute('role', 'button');
skins[d].setAttribute('aria-label', T.dark);
skins[d].setAttribute('title', T.dark);
skins[d].addEventListener('click', function () { setTimeout(syncSkin, 300); });
skins[d].addEventListener('keydown', function (e) { if (e.key === ' ') { e.preventDefault(); this.click(); } });
}
syncSkin();/* 5. Mobile menu (WCAG 4.1.2, 2.4.3): report open/closed, move focus in on open and back on close */
var btn = document.getElementById('mobile-menu-icon');
var panel = document.querySelector('.side-aside');
if (btn && panel) {
btn.setAttribute('role', 'button');
btn.setAttribute('aria-expanded', 'false');
if (!panel.id) { panel.id = 'aj-mobile-menu'; }
btn.setAttribute('aria-controls', panel.id);
var check = function (moveFocus) {
setTimeout(function () {
var open = visible(panel);
btn.setAttribute('aria-expanded', open ? 'true' : 'false');
if (open && moveFocus) {
var first = panel.querySelector('a[href]:not(.close-side-aside), button');
if (first) { first.focus(); }
}
if (!open && moveFocus === 'back') { btn.focus(); }
}, 450);
};
btn.addEventListener('click', function () { check(true); });
var closers = panel.querySelectorAll('.close-side-aside');
for (var c = 0; c < closers.length; c++) { closers[c].addEventListener('click', function () { check('back'); }); }
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && btn.getAttribute('aria-expanded') === 'true') {
setTimeout(function () {
/* the theme closes the menu on Escape in English but not in Arabic */
var x = panel.querySelector('.close-side-aside');
if (visible(panel) && x) { x.click(); }
check('back');
}, 150);
}
});
}/* 6. Heading levels (WCAG 1.3.1): no jumps for screen readers; looks unchanged */
var hs = document.querySelectorAll('h1, h2, h3, h4, h5, h6');
var prev = 0, hasH1 = !!document.querySelector('h1');
for (var h = 0; h < hs.length; h++) {
if (!visible(hs[h]) && !hs[h].closest('.side-aside')) { continue; }
var lvl = parseInt(hs[h].tagName.charAt(1), 10);
var eff = lvl;
if (!hasH1 && prev === 0) { eff = 1; }
else if (prev && lvl > prev + 1) { eff = prev + 1; }
if (eff !== lvl) { hs[h].setAttribute('aria-level', String(eff)); }
prev = eff;
}/* 7. Author photos: describe a linked photo by the author's name (it is the link's name); otherwise decorative */
var boxes = document.querySelectorAll('.about-author, .author-box, .m-a-box, .molongui-author-box');
for (var b = 0; b < boxes.length; b++) {
var pics = boxes[b].querySelectorAll('img');
for (var p = 0; p < pics.length; p++) {
var lk = pics[p].closest('a[href]');
var who = '';
if (lk) {
var byline = document.querySelector('a.author-name[href="' + lk.getAttribute('href') + '"]');
var strong = boxes[b].querySelector('.m-a-box-bio strong, [itemprop="name"]');
who = ((byline && byline.textContent) || (strong && strong.textContent) || '').trim();
}
if (lk && !who) { continue; } /* name not found: keep the existing description so the link keeps a name */
pics[p].setAttribute('alt', who);
}
}/* 9. "Opens in a new tab" for screen-reader users (W3C technique G201) */
var blanks = document.querySelectorAll('a[target="_blank"]');
for (var t = 0; t < blanks.length; t++) {
if (blanks[t].querySelector('.aj-newtab')) { continue; }
var sr = document.createElement('span');
sr.className = 'screen-reader-text aj-newtab';
sr.textContent = T.newTab;
blanks[t].appendChild(sr);
if (blanks[t].hasAttribute('aria-label')) { blanks[t].setAttribute('aria-label', blanks[t].getAttribute('aria-label') + T.newTab); }
}
}/* 8. Form errors (WCAG 3.3.1): link each error message to its field when it appears */
function linkErrors(root) {
var errs = (root || document).querySelectorAll('.ff-el-group .error, .ff-el-group .text-danger');
for (var e = 0; e < errs.length; e++) {
var grp = errs[e].closest('.ff-el-group');
var field = grp ? grp.querySelector('input:not([type=hidden]), select, textarea') : null;
if (!field) { continue; }
if (!errs[e].id) { errs[e].id = 'aj-err-' + Math.random().toString(36).slice(2, 9); }
var ids = (field.getAttribute('aria-describedby') || '').split(' ').filter(Boolean);
if (ids.indexOf(errs[e].id) === -1) { ids.push(errs[e].id); field.setAttribute('aria-describedby', ids.join(' ')); }
}
}
function watchForms() {
var forms = document.querySelectorAll('form.frm-fluent-form');
if (!window.MutationObserver) { return; }
for (var f = 0; f < forms.length; f++) {
new MutationObserver(function () { linkErrors(); }).observe(forms[f], { childList: true, subtree: true });
}
}function start() { run(); watchForms(); }
if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); }
})();
/* Aljaweea newsletter form (form 10): on Arabic pages, pre-select the Arabic edition.
2 Nov 2026 (Claude, runbook 8.82). Decision D-05 asks for the page language to be pre-selected through
the WPML translation of the field's default value; WPML does not offer that value for translation,
so this is the flagged fallback. The stored values stay "English" / "العربية" for the FluentCRM tag routing.
Rollback: set this snippet to Draft (the Arabic page then pre-selects English). */
(function () {
function run() {
if (!/^ar/i.test(document.documentElement.lang || '')) { return; }
var radios = document.querySelectorAll('form.fluent_form_10 input[type="radio"][name="dropdown"]');
for (var i = 0; i < radios.length; i++) {
if (radios[i].value === 'العربية') { radios[i].checked = true; radios[i].dispatchEvent(new Event('change', { bubbles: true })); }
}
}
/* Runs whether or not the page has finished loading (Breeze may delay scripts). */
if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', run); } else { run(); }
})();
/* Aljaweea forms: let Fluent Forms show its own error messages.
2 Nov 2026 (Claude, runbook 8.86; finding V-1 of the 8.85 test). Without this, the browser's own email check
stops the form when an address has no "@" and shows the browser's pop-up in the browser's language (English on
Arabic pages for most visitors), so our message from the forms standard (1.4) never appears.
"novalidate" switches off only the browser's own check: Fluent Forms still checks every field in the browser
and again on the server, so a badly formed address is still refused - now with our wording, in the page language.
Rollback: set this snippet to Draft. */
(function () {
function run() {
var forms = document.querySelectorAll('form.frm-fluent-form');
for (var i = 0; i < forms.length; i++) { forms[i].setAttribute('novalidate', 'novalidate'); }
}
/* Runs whether or not the page has finished loading (Breeze may delay scripts). */
if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', run); } else { run(); }
})();
ai_front = {"insertion_before":"BEFORE","insertion_after":"AFTER","insertion_prepend":"PREPEND CONTENT","insertion_append":"APPEND CONTENT","insertion_replace_content":"REPLACE CONTENT","insertion_replace_element":"REPLACE ELEMENT","visible":"VISIBLE","hidden":"HIDDEN","fallback":"FALLBACK","automatically_placed":"Automatically placed by AdSense Auto ads code","cancel":"Cancel","use":"Use","add":"Add","parent":"Parent","cancel_element_selection":"Cancel element selection","select_parent_element":"Select parent element","css_selector":"CSS selector","use_current_selector":"Use current selector","element":"ELEMENT","path":"PATH","selector":"SELECTOR"};