Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions html/arabic/java/advanced-usage/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@ weight: 20
### [كيفية تشغيل JavaScript في Java – دليل كامل](./how-to-run-javascript-in-java-complete-guide/)
تعلم كيفية تشغيل كود JavaScript داخل تطبيقات Java باستخدام Aspose.HTML for Java.

### [تقييم JavaScript في Java – دليل كامل مع Aspose.HTML](./evaluate-javascript-in-java-complete-guide-with-aspose-html/)
تعلم كيفية تنفيذ كود JavaScript داخل تطبيقات Java باستخدام Aspose.HTML خطوة بخطوة.

---

**آخر تحديث:** 2025-11-29
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
---
category: general
date: 2026-04-03
description: تقييم JavaScript في Java باستخدام Aspose.HTML – تعلّم كيفية تشغيل JavaScript
من Java، ضبط innerHTML، واستدعاء الدوال في دليل واحد.
draft: false
keywords:
- evaluate javascript in java
- set innerhtml javascript
- run javascript from java
- invoke javascript function java
language: ar
og_description: تعلم كيفية تقييم JavaScript في Java، وتعيين innerHTML، وتشغيل النصوص
البرمجية، واستدعاء الدوال باستخدام Aspose.HTML في مثال مختصر وقابل للتنفيذ.
og_title: تقييم JavaScript في Java – دليل خطوة بخطوة
tags:
- Aspose.HTML
- Java
- JavaScript
title: تقييم JavaScript في Java – دليل كامل مع Aspose.HTML
url: /ar/java/advanced-usage/evaluate-javascript-in-java-complete-guide-with-aspose-html/
---

{{< blocks/products/pf/main-wrap-class >}}
{{< blocks/products/pf/main-container >}}
{{< blocks/products/pf/tutorial-page-section >}}

# تقييم JavaScript في Java – دليل كامل مع Aspose.HTML

هل احتجت يوماً إلى **تقييم JavaScript في Java** لكن لم تكن متأكدًا من أي API يمكنه سد الفجوة؟ لست وحدك؛ يواجه العديد من مطوري Java هذا العائق عند محاولة تعديل HTML أو تشغيل منطق جانب العميل على الخادم. الخبر السار؟ Aspose.HTML يزودك بمحرك سكريبت يتيح لك **تشغيل JavaScript من Java**، تعديل الـ DOM، واستدعاء الدوال—كل ذلك دون الحاجة إلى متصفح.

في هذا الدرس ستتعرف بالضبط على كيفية **ضبط innerHTML JavaScript** من Java، استدعاء دالة JavaScript، والحصول على النتائج مرة أخرى في كود Java الخاص بك. في النهاية ستحصل على مثال جاهز للنسخ واللصق يعمل مع أحدث نسخة من Aspose.HTML for Java (v23.12 وقت كتابة هذا المقال). لا مستندات خارجية، لا إشارات غامضة—فقط كود، شروحات، وبعض النصائح الاحترافية.

## ما ستحتاجه

- **Java 17** (أو أي JDK حديث؛ الـ API متوافق مع Java‑8)
- **Aspose.HTML for Java** ملفات JAR على مسار الـ classpath الخاص بك (حمّلها من الموقع الرسمي لـ Aspose)
- بيئة تطوير متوسطة مثل IntelliJ IDEA أو VS Code، لكن محرر نصوص بسيط يكفي أيضًا
- فضول لاستكشاف الـ DOM من Java

إذا كان لديك كل ذلك، رائع—لننتقل مباشرة إلى الحل.

## الخطوة 1: إنشاء مستند HTML فارغ – القماش للتقييم

أول شيء نقوم به هو إنشاء `HTMLDocument` فارغ. فكر فيه كصفحة HTML جديدة تعيش فقط في الذاكرة؛ يمكنك إرفاق سكريبتات، تعديل عناصر، واستعلام الـ DOM دون الحاجة إلى كتابة ملف.

```java
import com.aspose.html.*;
import com.aspose.html.scripting.*;

public class JavaScriptEvalTutorial {
public static void main(String[] args) throws Exception {

// Step 1 – create an in‑memory HTML document
try (HTMLDocument document = new HTMLDocument()) {
// All further actions happen inside this try‑with‑resources block
```

> **لماذا هذا مهم:**
> Aspose.HTML يعزل محرك السكريبت عن الـ JVM المستضيف، لذا لن تتسبب بطريق الخطأ في تلوث مسار الـ classpath لتطبيقك. المستند يمنحك أيضًا `ScriptEngine` يحترم نفس معايير JavaScript التي يتبعها المتصفح.

## الخطوة 2: إضافة عنصر `<script>` – تعريف الدالة التي ستستدعيها

بعد ذلك نقوم بحقن دالة JavaScript بسيطة. في المشاريع الحقيقية يمكنك تحميل ملف خارجي أو حتى توليد السكريبت ديناميكيًا.

```java
// Step 2 – embed a JavaScript function into the <head>
String functionScript = "function add(a,b){ return a+b; }";
document.getHead()
.appendChild(document.createElement("script"))
.setTextContent(functionScript);
```

> **نصيحة احترافية:**
> استخدم `document.createElement("script")` بدلاً من دمج السلاسل النصية داخل HTML؛ فهذا يضمن الترميز الصحيح ويتجنب الأخطاء الشبيهة بـ XSS عندما يحتوي السكريبت على علامات اقتباس.

## الخطوة 3: الحصول على محرك السكريبت – الجسر بين Java و JavaScript

Aspose.HTML يزودك بـ `ScriptEngine` يتبع عقدة JSR‑223 (javax.script). بمجرد حصولك عليه، يمكنك `eval` أي كود عشوائي أو استدعاء دوال مسماة مباشرة.

```java
// Step 3 – obtain the JavaScript engine tied to the document
ScriptEngine scriptEngine = document.getScriptEngine();
```

> **ما الذي يحدث خلف الكواليس؟**
> المحرك هو مفسر خفيف الوزن مبني على V8. يحترم سياق `document` الحالي، مما يعني أن أي تعديل للـ DOM تقوم به داخل `eval` سيؤثر على نفس نسخة `HTMLDocument`.

## الخطوة 4: استدعاء دالة JavaScript من Java – `invokeFunction` قيد التنفيذ

الجزء الممتع الآن: استدعاء الدالة `add` التي عرفناها للتو. طريقة `invokeFunction` تأخذ اسم الدالة متبوعًا بأي وسائط تريد تمريرها.

```java
// Step 4 – call the JavaScript function directly from Java
Object addResult = scriptEngine.invokeFunction("add", 7, 13);
System.out.println("Result of add(7,13): " + addResult); // prints 20
```

> **لماذا نستخدم `invokeFunction`؟**
> يتجاوز عبء تحليل سلسلة سكريبت كاملة ويعطيك وسائط آمنة من حيث النوع. القيمة المرجعة تُغلف تلقائيًا إلى كائن Java `Object`، ويمكنك تحويله إذا لزم الأمر.

## الخطوة 5: تقييم تعبير JavaScript عشوائي – ضبط `innerHTML` من Java

أخيرًا نوضح **ضبط innerHTML JavaScript** عبر تنفيذ مقتطف يغيّر محتوى جسم الصفحة ويعيد النص.

```java
// Step 5 – evaluate a script that changes the DOM
Object evalResult = scriptEngine.eval(
"document.body.innerHTML = '<p>Hello</p>'; document.body.textContent;");
System.out.println("Body text: " + evalResult); // prints \"Hello\"
}
}
}
```

> **ما المتوقع حدوثه:**
> بعد تشغيل `eval`، يصبح `<body>` في المستند الموجود في الذاكرة يحتوي الآن على `<p>Hello</p>`. ثم يقرأ التعبير `document.body.textContent`، والذي يعيده المحرك إلى Java كسلسلة نصية. هذا يبرز قوة **تشغيل JavaScript من Java** مع الحفاظ على الأمان النوعي.

---

![evaluate javascript in java example](https://example.com/images/eval-js-in-java.png)

*نص بديل للصورة: مثال تقييم جافا سكريبت في جافا – يظهر وحدة تحكم جافا تطبع النتائج*

## تنوعات شائعة وحالات حافة

### التعامل مع الكود غير المتزامن

إذا كان السكريبت الخاص بك يستخدم `setTimeout` أو الـ promises، ستحتاج إلى استدعاء `scriptEngine.eval` داخل حلقة تتحقق من `scriptEngine.getContext().getAttribute("javax.script.pending")`. في معظم السيناريوهات على الخادم، يكون الكود المتزامن (كما هو موضح) كافيًا.

### تمرير كائنات معقدة

يمكنك إتاحة كائن Java للـ JavaScript عبر `scriptEngine.put("javaObj", myObject)`. داخل السكريبت، يتصرف `javaObj` ككائن Java عادي، مما يسمح لك باستدعاء طرقه العامة.

### التعامل مع الأخطاء

غلف `scriptEngine.eval` بكتلة try‑catch من نوع `ScriptException`. رسالة الاستثناء تتضمن رقم السطر وتتبع مكدس JavaScript، مما يجعل عملية التصحيح مباشرة.

```java
try {
scriptEngine.eval("invalid code");
} catch (ScriptException ex) {
System.err.println("Script error: " + ex.getMessage());
}
```

## مثال كامل يعمل (جاهز للنسخ واللصق)

فيما يلي البرنامج الكامل، تمامًا كما ستضعه في `src/main/java/JavaScriptEvalTutorial.java`.

```java
import com.aspose.html.*;
import com.aspose.html.scripting.*;

public class JavaScriptEvalTutorial {
public static void main(String[] args) throws Exception {

// Step 1: Create a blank HTML document that will host the script
try (HTMLDocument document = new HTMLDocument()) {

// Step 2: Add a <script> element defining a simple JavaScript function
String functionScript = "function add(a,b){ return a+b; }";
document.getHead()
.appendChild(document.createElement("script"))
.setTextContent(functionScript);

// Step 3: Obtain the script engine associated with the document
ScriptEngine scriptEngine = document.getScriptEngine();

// Step 4: Call the JavaScript function directly from Java
Object addResult = scriptEngine.invokeFunction("add", 7, 13);
System.out.println("Result of add(7,13): " + addResult); // prints 20

// Step 5: Evaluate an arbitrary JavaScript expression that modifies the page
Object evalResult = scriptEngine.eval(
"document.body.innerHTML = '<p>Hello</p>'; document.body.textContent;");
System.out.println("Body text: " + evalResult); // prints "Hello"
}
}
}
```

**الإخراج المتوقع في وحدة التحكم**

```
Result of add(7,13): 20
Body text: Hello
```

إذا رأيت هذين السطرين، فقد نجحت في **تقييم JavaScript في Java**، **ضبط innerHTML JavaScript**، و**استدعاء دالة JavaScript من Java**—كل ذلك في خطوة واحدة.

## ملخص وخطوات قادمة

لقد استعرضنا دورة الحياة الكاملة لـ **تقييم JavaScript في Java** باستخدام Aspose.HTML:

1. إنشاء `HTMLDocument` في الذاكرة.
2. حقن وسم `<script>` يحتوي على الدالة التي تريد استدعاؤها.
3. الحصول على `ScriptEngine` المرتبط بهذا المستند.
4. استخدام `invokeFunction` لـ **تشغيل JavaScript من Java** والحصول على نتيجة.
5. استخدام `eval` لـ **ضبط innerHTML JavaScript** واسترجاع بيانات الـ DOM.

من هنا يمكنك استكشاف:

- **تحميل سكريبتات خارجية** عبر `document.createElement("script").setAttribute("src", "...")`.
- **تعديل CSS** عبر `document.body.style`.
- **تشغيل مكتبات أكبر** مثل Lodash أو Moment.js داخل المحرك.

لا تتردد في التجربة—استبدل دالة `add` بشيء أكثر تعقيدًا، أو مرر سلاسل JSON إلى السكريبت ثم حللها مرة أخرى في Java. الإمكانيات مفتوحة كما هو الحال في وحدة تحكم المتصفح، لكن مع أمان وأداء عملية Java على الخادم.

هل لديك أسئلة أو واجهت مشكلة؟ اترك تعليقًا، ونتمنى لك برمجة سعيدة!

{{< /blocks/products/pf/tutorial-page-section >}}
{{< /blocks/products/pf/main-container >}}
{{< /blocks/products/pf/main-wrap-class >}}
{{< blocks/products/products-backtop-button >}}
3 changes: 3 additions & 0 deletions html/arabic/java/configuring-environment/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,9 @@ HTML الديناميكي غالبًا ما يحتوي على سكريبتات
### [ضبط ورقة الأنماط المخصصة في Aspose.HTML for Java](./set-user-style-sheet/)
تعلم كيفية ضبط ورقة أنماط مخصصة في Aspose.HTML for Java، تحسين تنسيق المستندات، وتحويل HTML إلى PDF بسهولة.

### [كيفية استخدام العزل – تعيين وكيل المستخدم والحصول على حجم نافذة العرض](./how-to-use-sandbox-set-user-agent-get-viewport-size/)
تعلم كيفية تعيين وكيل المستخدم والحصول على حجم نافذة العرض عند استخدام العزل في Aspose.HTML for Java.

---

**آخر تحديث:** 2025-12-03
Expand Down
Loading