কোনও ইউআইবিউবভিউর ভিতরে জাভাস্ক্রিপ্ট ডিবাগ করার জন্য কয়েকটি পদ্ধতি কী?


136

আমি জাভাস্ক্রিপ্টের সাথে কোনও ইউআইবিউবভিউয়ের অভ্যন্তরে কেন কাজ করছে না তা জানার চেষ্টা করছি। আমার জানা মতে, জেএস ফাইলের জন্য এক্সকোডের অভ্যন্তরে ব্রেকপয়েন্ট নির্ধারণের কোনও উপায় নেই। সমস্যা নেই, আমি কেবল 2004 এ ফিরে যাব এবং সতর্কতা স্টেটম্যান ব্যবহার করব - ওহ অপেক্ষা করুন তারা কোনও ইউআইউইউভিউ ভিউয়ের ভিতরে কাজ করবে না বলে মনে হয়!

আমি কেবলমাত্র আমার ডেস্কটপে আমার এইচটিএমএল এবং জেএস ফাইলগুলি রফতানি করে কেবল সাফারির ভিতরে আমার ডিবাগিংয়ের মাধ্যমে ভাবতে পারি। এবং যে কাজ করে! তবে অবশ্যই, আমি যে বাগটি ইউআইউইউভিউ ভিউয়ের সাথে লড়াই করছি তা সাফারিতে ঘটে না।

কোনও ইউআইউইউভিউ ভিউয়ের ভিতরে ডিবাগ করার জন্য কি অন্য কোনও উপায় আছে, বা পুরাতন স্কুল সতর্কতা পদ্ধতিটি ব্যবহার করার মতো আমি কী ব্যবহার করতে পারি?

উত্তর:


277

আপনি যদি আইওএস> = = 6 ব্যবহার করে থাকেন এবং আপনার কাছে পর্বত সিংহ (10.8) বা সাফারি> = 6 রয়েছে তবে আপনি ঠিক করতে পারেন:

  1. সিমুলেটরটিতে অ্যাপ্লিকেশনটি খুলুন (বা এক্সকোডে আপনার ডিভাইস> = 4.5.x)।
  2. সাফারি খুলুন (যান Preferences -> Advancedএবং "মেনুবারে বিকাশ মেনু প্রদর্শন করুন" চালু আছে তা নিশ্চিত করুন।
  3. মেনু-বার থেকে (সাফারির) নির্বাচন করুন Develop -> iPhone Simulator -> [your webview page]

এটাই !


6
এটি কেবল তখনই কাজ করে যদি কোনও সিমুলেটারে অ্যাপ্লিকেশন চালিত হয়। আপনি যদি ডিবাগিংয়ের জন্য অবশ্যই কোনও আইওএস ডিভাইস ব্যবহার করতে পারেন তবে এই পন্থাটি দেখুন mobiarch.wordpress.com/2013/04/06/…
রাজভি

7
@ রাজভ আপনি কোনও শারীরিক ডিভাইসে ইউআইউইউবভিউগুলি ডিবাগ করতে পারেন তবে কেবলমাত্র আপনি আপনার ডিভাইসে এক্সকোডের সাহায্যে সরাসরি রেখেছেন, অ্যাপস্টোর থেকে নয়।
অ্যালকাইল

1
খুব সুস্পষ্ট, তবে এটি সহায়ক হতে পারে। আমি এটি iOS7 সিমুলেটরে OSX 10.9 ম্যাভারিকস এবং সাফারি 7 চলমান - খুব সুন্দরভাবে কাজ করে দেখেছি। এর জন্য ধন্যবাদ.
মো

1
@ রেফেলোস ধন্যবাদ !! যদি আমি ডেভলপমেন্ট অস্থায়ী প্রোফাইল ব্যবহার করি তবে এটি আমার শারীরিক ডিভাইসের সাথে কাজ করছে।
umang2203

11
সিমুলেটার সম্পর্কে নিশ্চিত নয় তবে ডিভাইসে এটি কাজ করার জন্য আপনাকে সেটিংসে সক্ষম করার একটি বিকল্প রয়েছে। Settings> Safari> Advanced> Web Inspector<- এই সক্ষম
হডসন

31

গুগল শীর্ষে এই ক্যোয়ারী শীর্ষস্থানীয়, আইওএস 5-এ লুকানো রিমোটইনস্পেক্টরের সাথে সংযোগ স্থাপনের পক্ষে মূল্যবান - আপনার ইউআইবিউভিউ ভিউগুলি ডিবাগ করার জন্য এখন পর্যন্ত সবচেয়ে ভাল উপায় খুঁজে পাওয়া গেছে - আপনি অ্যাপলের কাছে প্রেরণের আগে শর্তসাপেক্ষ সংকলনটি বেরিয়ে এসেছেন।


3
এখনও কাজ করে না, এটি ব্যবহার করুন: [NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];আপনি যখন মুক্তির জন্য যান তখন কলটি সরিয়ে ফেলতে ভুলবেন না!
rpitting

1
এটি একটি দুর্দান্ত কৌশল। তবে নোট করুন যে ডিবাগারটি কেবল সাফারিতেই কাজ করে। আমি এটি অন্যান্য ব্রাউজারগুলি (উদাহরণস্বরূপ ক্রোম) থেকে চেষ্টা করেছি এবং এটি কিছুই দেখায় নি।
সাগি মান

3
আমি এটি আগে ব্যবহার করতাম, তবে দৃশ্যত এটি এখন কাজ করছে না যেহেতু পর্বত সিংহটি প্রদর্শিত হয়েছে (এখানে সম্ভাব্য কার্যনির্বাহী ): iwebinspector.com/help.html#ml
ওমর

9

সতর্কতা () অবশ্যই আমার জন্য কাজ করে।

তবে আপনি অন্যান্য অনেকগুলি কাজও করতে পারেন, যেমন আপনার নিজের ডিএইচটিএমএল সতর্কতা তৈরি করুন যা কোনও স্তরে পপ আপ হয়। এটি দুর্দান্ত হতে পারে কারণ আপনি নিজের অ্যাপটি বন্ধ না করেই একক ডিভিতে একাধিক সতর্কতা করতে পারেন। আপনি এটিতে একটি স্ট্যাক ট্রেস লিখতে সক্ষম হওয়া উচিত (স্ট্যাক ট্রেস ব্যতিক্রম বস্তুতে রয়েছে, এবং আপনি সর্বদা নিজের ব্যতিক্রম ছুঁড়ে ফেলতে পারেন)।

বিকল্পভাবে, যদি সিমুলেটারে চলতে থাকে তবে আপনার কাস্টম "সতর্কতা ()" উদ্দেশ্য সিতে কল করতে পারে এবং আইফোন সিমুলেটারের কনসোল উইন্ডোটিতে স্ট্রিংটি প্রদর্শন করতে পারে:

document.location.href = "http://debugger/" + 
   encodeURIComponent(outputString);   

এবং উদ্দেশ্য সি দিকে:

//--------------------------------------------------------------------
- (BOOL)webView:(UIWebView*)webView 
       shouldStartLoadWithRequest: (NSURLRequest*)req 
       navigationType:(UIWebViewNavigationType)navigationType {
    if ([[[req URL] host] isEqualToString:@"debugger"]){
        // do stuff with [[req URL] path] 
       }
}

এটি বলেছিল, আমার কাছে একটি অ্যাপ্লিকেশন রয়েছে যা ইউইউইউভিউ ভিউ / জাভাস্ক্রিপ্ট স্টাফগুলিতে ভারী এবং আমি ক্রোমে বেশিরভাগ জাভাস্ক্রিপ্ট দেব করার চেষ্টা করি (আইফোনের পরিবেশের থেকে যা প্রয়োজনীয় তা অনুকরণ করে)


আপনার কী অর্থ "সতর্কতা ()" অবশ্যই আমার পক্ষে কাজ করে? অবজেক্টিভ-সি-তে কল করা সৃজনশীল, বিস্মিত হওয়ার আগে আমি এর আগে কিছুটা ভাবিনি বলে এর আগে ভাবিনি! ধন্যবাদ। :)
বিপাপা

হ্যাঁ, সতর্কতা () ঠিক কাজ করে। সম্ভবত এটি কোনও পুরানো সংস্করণে নেই? তবে আমি এটি চেষ্টা করেছি এবং একটি পপআপ পেয়েছি যা ইউজায়আরলেটভিউয়ের সাথে আপত্তিজনক দিকের সাথে করা প্রায় একইরকম দেখাচ্ছে।
ছিনতাই

8

আমি ইউআইবিউবভিউ বা এসএসএসফারিভিউ কনট্রোলার ডিবাগ করার দুর্দান্ত উপায়টি পেয়েছি

আমি আশা করি এটি সাহায্য করবে।

ধাপ 1: 
 আপনার ম্যাকটিতে সাফারি ভিসি খুলুন (হাহাহা আপনার মুখটি তৈরি করবেন না, যদি আমি আপনার ম্যাকবুকটিতে বলছি তবে আমার এই পদক্ষেপগুলি অনুসরণ করুন)



পদক্ষেপ 2: সাফারি পছন্দগুলিতে যান এবং অগ্রিম ক্লিক করুন। আপনি আপনার ম্যাকবুক স্ক্রিনে এই সেটিংটি পাবেন।

এখানে চিত্র বর্ণনা লিখুন

এখন মেনু বারে মেনু বিকাশ করতে সক্ষম করুন। এখন আপনার সমস্ত কাজ শেষ হয়েছে। আপনি কি ভাবছেন যে আমি মজা করছি: পি: পি কোনও মানুষ ... 



স্টিপি 3: ডিভাইস বা সিমুলেটরে আপনার অ্যাপ্লিকেশনটি চালান। (শুধু চালানোর কথা ভাববেন না) এবং আপনার অ্যাপ্লিকেশনটিতে যান যেখানে আপনি আপনার ওয়েবভিউ বা এসএফএসফারিভিউ কনট্রোলার খুলছেন। এতক্ষণে আপনি বুঝতে পারেননি আমি জানি। শান্ত থাকুন এবং আমার পরবর্তী পদক্ষেপ দেখুন।

পদক্ষেপ:: আপনার ম্যাকবুকে সাফারিটি খুলুন এবং মেনু বার থেকে বিকাশ বিকল্পটিতে ক্লিক করুন। আপনি কি আপনার ম্যাকবুক, আইপ্যাড / আইফোনটি সঠিকভাবে প্রদর্শন করছে এমন কিছু পেয়েছেন ?????

এখানে চিত্র বর্ণনা লিখুন



পদক্ষেপ 5: এটি সম্পন্ন হয়েছে। আপনার ডিভাইসে ক্লিক করুন এবং ইউআরএল ক্লিক করুন নতুন পপআপ এর মত প্রকাশিত হবে। এখানে চিত্র বর্ণনা লিখুন




পদক্ষেপ :: আপনি এখন যা দেখছেন তা এখানে সমস্ত পদক্ষেপ রয়েছে।

এখন এই কনসোলে আপনার ওয়েবপৃষ্ঠাটি ডিবাগ করুন। এক কাপ চা বা কফির সাথে কোডিংয়ের সময় আপনার দিনটি খুশি করুন and

আইএমপি: চিত্রের নীচে দেখুন সক্ষম করতে ভুলবেন না এখানে চিত্র বর্ণনা লিখুন 









6

আমি এটি এখনও চেষ্টা করি নি, তবে এই ওয়েইনারে একবার দেখুন

খুব প্রতিশ্রুতিবদ্ধ দেখাচ্ছে।


ওয়েইনারে দুর্দান্ত, তবে সতর্ক থাকুন যে এটি ধাপে ধাপে জেএস ডিবাগারের সাথে আসে না; এটি কেবলমাত্র "ওয়েব পরিদর্শক"। (আমি আমার আইফোনে এটি সেট আপ করতে অনেক সমস্যায় না যাওয়া পর্যন্ত আমি এটি লক্ষ্য করিনি))
ড্যান ফাবুলিচ

ওয়েইন মনে হচ্ছে সিংহ থেকে কাজ করা বন্ধ করে দিয়েছে: আমি আর সংযোগ পেতে পারি না, সম্ভবত স্যান্ডবক্সিংয়ের সমস্যা an
13:39

দেখে মনে হচ্ছে অ্যাডোবের এখন ওয়েইনারের সাথে একটি চুক্তি রয়েছে এবং এটি অ্যাডোব শ্যাডো নামে একটি অ্যাপ্লিকেশন সরবরাহ করে যা এটি কার্যকর করে। বেশ ভাল কাজ করে।
অ্যাড্রিয়ান হ্যারিস ক্রাউন

আমি এনপিএম (নোড.জেএস প্যাকেজ ম্যানেজার) এর মাধ্যমে ওয়েইনারে ইনস্টল করেছি এবং এটি আমার জন্য মাউন্টেন সিংহে কাজ করছে। এনপিএম ইনস্টল
-জি ওয়েইন

2
শুধুমাত্র লিঙ্ক-উত্তর একটি মন্তব্য হিসাবে ভাল উপযুক্ত।
জোরিস মেজ

4

এটি একটি পুরানো প্রশ্ন। তবে আমি এখনও আমার দুটি সেন্ট ভাগ করে নিতে চাই।

আমি রিমোট ডিবাগিংয়ের জন্য jsconsole.com ব্যবহার করছি । এটি সহজ. কেবল একটি স্ক্রিপ্ট ট্যাগ অন্তর্ভুক্ত করুন এবং মুদ্রণ দ্বারা ডিবাগ করতে কনসোল লগগুলি ব্যবহার করুন। এটি বাস্তব ডিভাইসে ডিবাগিংয়ের জন্যও ব্যবহার করা যেতে পারে।


3

পুরানো প্রশ্ন, তবে আমি মনে করি আমি সর্বোত্তম সমাধানটি পেয়েছি, আমার ক্ষেত্রে আপনাকে ইউইউবভিউটি ডিবাগ করতে হবে তবে আমার আইওএস অ্যাপটিতে এবং কেবল এইচটিএমএল সামগ্রীটিতে অ্যাক্সেস ছিল না এবং আমাকে কিছু জেএস লগ দেখতে হয়েছিল, আমি নিম্নলিখিত কোডটি যুক্ত করেছি হালকা ফায়ারব্যাগ জেএস লোড করতে এবং এটি স্বয়ংক্রিয়ভাবে দেখাতে:

জেএস থেকে এটি কল

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://getfirebug.com/firebug-lite-debug.js';
document.head.appendChild(script);

অথবা এটি এইচটিএমএল থেকে লোড করুন

<script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>

-1

আপনি জাভা স্ক্রিপ্ট থেকে উদ্দেশ্যমূলক-সি-তে বার্তা প্রেরণ এবং সেখান থেকে লগইন করতে ফোনগ্যাপে এর মতো একটি সিস্টেম সেট আপ করতে পারেন । সংক্ষেপে, তারা দস্তাবেজ সেট করছে a একটি কাস্টম স্কিমের সাথে অবস্থান এবং প্রতিনিধি কলব্যাকে সেই পরিকল্পনাটি অবরুদ্ধ করে।

আপনি যে ইউআইউইউবভিউ হ'ল বেশিরভাগ ওয়েবভিউয়ের প্রতিনিধি the ওয়েবকিটটি আইফোনটির জন্য প্রযুক্তিগতভাবে অননুমোদিত, তবে বেশিরভাগ ডেস্কটপ ওয়েবকিট শিরোনামে বর্ণিত, সম্ভবত ওয়েবস্ক্রিপ্টঅজেক্ট সহ। আমি এটি ডিবাগিংয়ের জন্য ব্যবহার করি তবে অ্যাপলের কাছে জমা দেওয়ার আগে এই কোডটি সরিয়ে ফেলার বিষয়ে নিশ্চিত হন।

কোনও ইউআইউইউভিউ ভিউ থেকে একটি ওয়েবভিউ পেতে, ইউআইউইউবভিউয়ের -(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrameএকটি সাবক্লাসের মতো একটি প্রতিনিধি পদ্ধতি প্রয়োগ করুন । আপনি যদি এটি ব্যবহার করেন তবে সুপারকে কল করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.